JSF的immediate属性

使用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中数据

你可能感兴趣的:(JSF)