<h:form id="myform">
<h:inputSecret value="#{createNewPassword.newPassword1}" id="newPassword1" />
<h:message class="error" for="newPassword1" />
<h:inputSecret value="#{createNewPassword.newPassword2}" id="newPassword2" />
<h:message class="error" for="newPassword2" />
<h:commandButton value="Continue" action="#{createNewPassword.continueButton}" />
</h:form>
我希望能够基于continueButton()方法中发生的某些情况,将错误指派给特定的h:message标记。对于newPassword和newPassword2,需要显示不同的错误信息。验证器无法正常工作,因为将提供结果的方法(来自DB)在continueButton()方法中运行,并且运行两次的成本太高。
我不能使用h:messages标记,因为页面有多个位置需要显示不同的错误消息。当我尝试过这样做时,页面会重复显示每条消息。
我尝试了最佳猜测,但没有成功:
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
我还缺少什么?任何帮助将不胜感激!