JSF immediate = true验证跳过验证
问题描述:
commandLink跳过验证不应该immediate="true"
?当我点击该链接时,仍然收到“密码为必填”消息,有什么想法?JSF immediate = true验证跳过验证
<h:inputSecret id="j_password" autocomplete="off" value="#{authenticationBean.password}" required="true" requiredMessage="Password is Required" />
<p:commandLink action="#{authentication.forgotPassword}" ajax="false">
<h:outputText value="#{bundle['login.forgotpassword.TEXT']}" immediate="true"/>
</p:commandLink>
答
你把它放在<h:outputText>
而不是<p:commandLink>
。 immediate
属性对UIOutput
组件没有影响(并且在某些环境中也会产生XML验证错误),它仅对UIInput
和UICommand
组件有效。将该属性移至<p:commandLink>
组件。
答
immediate属性不会跳过任何验证。它将组件及其所有事件,验证程序等移至APPLY_REQUEST阶段。以便您有机会在所有其他非即时输入和命令之前处理输入和命令。
http://www.javacodegeeks.com/2012/01/jsf-and-immediate-attribute-command.html
如果你想跳过即时确认,你将不得不采取在立即采取行动的情况下,适当的行动以避免输入和他们的活动,像一个FacesContext重定向进一步处理。