在我的 JSF/Facelets 应用程序中,这是我的部分表单的简化版本:
<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 需要显示不同的错误。验证器不会真正起作用,因为将传递结果(来自数据库)的方法在 continueButton() 方法中运行,并且运行两次的成本太高。
我不能使用 h:messages 标记,因为该页面有多个地方需要显示不同的错误消息。当我尝试这样做时,页面显示每条消息的重复项。
我试过这个作为最好的猜测,但没有运气:
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
我错过了什么?任何帮助,将不胜感激!