我正在写一个用户可以更改密码的页面。首先,他需要输入旧密码并调用验证器。当密码正确时,两个密码字段都会启用,他可以输入新密码并需要重复密码。
我正在使用primefaces 4.0中的p:password组件。
在他可以输入新密码的第一个密码字段中,我有一个属性feedback =“true”。这里的问题是,当我第一次呼叫网站时,没有反馈输出。它仅在我重新加载页面并再次输入密码字段时出现
此外,不调用密码字段的验证器validatePwd1
在重复密码字段中,我对验证器有同样的问题。
在页面加载ajax之后是否可以仅重新加载这两个组件?或者有更好的方法来解决此错误?
这是我的页面:
<p:row id="RowConfirmOldPw" rendered="#{userSettingBean.showPasswordFields}">
<p:column>
<p:outputLabel value="#{msg['usersett_account_oldPwd']}"/>
</p:column>
<p:column>
<p:password id="oldPwd" value="#{userSettingBean.oldPassword}" >
<f:validator validatorId="passwordEqualValidator"/>
<f:ajax event="keyup" render="oldPwdMessage pwd1 pwd2"/>
</p:password>
<p:watermark for="oldPwd" value="#{msg['usersett_account_oldPwd']}"/>
</p:column>
<p:column>
<p:message id="oldPwdMessage" for="oldPwd"/>
</p:column>
</p:row>
<p:row id="RowTypeNewPassword">
<p:column>
<p:outputLabel value="#{msg['usersett_account_newPwd']}"/>
</p:column>
<p:column>
<p:password id="pwd1" value="#{userSettingBean.password1}"
disabled="#{userSettingBean.disableNewPassword}" feedback="true" validator="#{userSettingBean.validatePwd1}">
<f:ajax event="keyup" render="pwdMatchMessage"/>
</p:password>
</p:column>
</p:row>
<p:row>
<p:column>
<h:outputLabel value="#{msg['usersett_account_reenter']}"/>
</p:column>
<p:column>
<p:password id="pwd2" value="#{userSettingBean.password1}"
disabled="#{userSettingBean.disableNewPassword}" validator="#{userSettingBean.validateMatch}">
<f:ajax event="keyup" render="pwdMatchMessage buttonSaveAccount"/>
</p:password>
</p:column>
<p:column>
<h:message id="pwdMatchMessage" for="pwd2"/>
</p:column>
</p:row>
答案 0 :(得分:0)
我现在解决了这个问题
当你使用primefaces时,你总是必须采取
<p:ajax>
标记。在我的代码中,我也使用了<f:ajax>
这两个标签不能一起使用。
当我用<f:ajax>
替换<p:ajax>
代码时,它就有效了!