Java Ajax不使用h:inputSecret

Java Ajax不使用h:inputSecret,java,ajax,validation,jsf,jsf-2,Java,Ajax,Validation,Jsf,Jsf 2,试图显示密码字段所需的消息,但它不适用于Ajax,一旦输入密码,它就会消失。 目前,它完全由h:inputSecret的必需属性完成,但是在执行HTTP提交之前,Ajax会更好。 相关片段: <h:inputSecret id="newPassword" value="#{changePassword.password}" autocomplete="off" required="true"

试图显示密码字段所需的消息,但它不适用于Ajax,一旦输入密码,它就会消失。
目前,它完全由
h:inputSecret
的必需属性完成,但是在执行HTTP提交之前,Ajax会更好。
相关片段:

<h:inputSecret id="newPassword"
               value="#{changePassword.password}"
               autocomplete="off"
               required="true"
               requiredMessage="#{i18n['javax.faces.component.UIInput.REQUIRED']}">
          <f:ajax event="blur"
                  render="@this Password_Message"/>
</h:inputSecret>
<h:message id="Password_Message" for="newPassword" errorClass="error"
           tooltip="true" />


非常感谢您给出一个解释为什么会发生这种情况的答案,尽管您仍在学习JSF 2.0:)

您已经向输入元素添加了一个
render=“@this”
,这将导致在ajax请求完成时重新提交整个输入元素。默认情况下,由于安全原因,表单提交后不会重新显示值。报告还逐字说明:

当且仅当“重新显示”组件属性为字符串“true”时,将组件的当前值呈现为“value”属性的值

同样的情况也适用于
字段的ajax重新排序。但是,您可以通过添加
redisplay=“true”
强制重新显示


因此,验证是可以的。但唯一的问题是字段被重置了?验证是可以的,因为在键入密码并尝试键入确认后,输入的密码将消失..“默认情况下,由于安全原因,表单提交后不会重新显示密码字段值。”这正是我一直在寻找的,谢谢!不客气。注意,我对答案做了一些改进,添加了一些文档链接。
<h:inputSecret redisplay="true">
    <f:ajax event="blur" render="@this messageid" />
</h:inputSecret >
<h:inputWhatever>
    <f:ajax event="blur" render="messageid" />
</h:inputWhatever>