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验证错误),它仅对UIInputUICommand组件有效。将该属性移至<p:commandLink>组件。

immediate属性不会跳过任何验证。它将组件及其所有事件,验证程序等移至APPLY_REQUEST阶段。以便您有机会在所有其他非即时输入和命令之前处理输入和命令。

http://www.javacodegeeks.com/2012/01/jsf-and-immediate-attribute-command.html

如果你想跳过即时确认,你将不得不采取在立即采取行动的情况下,适当的行动以避免输入和他们的活动,像一个FacesContext重定向进一步处理。