JSF的immediate属性
2010年01月13日 星期三 14:20
使用immediate属性目的:
1.允许一个commandLink或commandButton浏览到另一个页面,而不处理当前页面输入域的任何数据,即使有验证错误.Cancel按钮,通常属于这一类; 2.允许commandLink或commandButton触发后端逻辑,而忽略页面上的一些字段验证。这是最普遍的应用。 例如:下面的code,按钮执行导航并没有验证required域 <h:inputText id="it" required="true"/> <t:message for="it"/> <t:commandButton value="submit" immediate="true" action="welcome"/> 3.使一个或多个输入组件优先验证,如果它们中的任何是无效的,那么就不会执行其他输入组件的验证,这样可以减少错误信息的显示 例如下面的代码,仅对第一个组件进行验证,尽管它们都是required,而当第一个验证通过时,才会执行第二个组件的验证 <h:inputText id="it1" immediate="true" required="true"/> <h:inputText id="it2" required="true"/> <t:message for="it1"/> <t:message for="it2"/> <t:commandButton value="submit" action="welcome"/> 许多开发人员认为,使用组件的immediate属性可以跳过“处理验证”阶段。事实并非如此,使用immediate属性会让事件在应用请求值阶段被处理 而在 <rich:menuItem value="#{msgs.save }" actionListener="#{pc_OrganizationAdd.organizationAddActionListener}" immediate="false" submitMode="ajax" data="#{pc_OrganizationAdd.msg }" oncomplete="handleResponse(data)" />中如果设置 immediate="true",则无法获取form中数据 参考:http://www.javabeat.net/qna/497-what-is-the-use-of-immediate-attribute/ |