我正在JSF中进行验证,我看到很多非常基本的逻辑示例。坦率地说,我将它们放在HelloWorld示例所在的同一类别中。我无法想象在xhtml文件中放置错误消息,为每个验证字段使用单独的验证方法或使用bean验证。
我想要做的是,在backing bean上有一个方法,它将为每个字段执行验证,记录由i18n属性文件中的键驱动的错误消息。
可以这样做吗?如果是这样,我们如何将该方法注册为验证方法,如何获取提交的字段值以进行评估,以及如何注册错误消息?
答案 0 :(得分:0)
<h:inputText id="username" value="#{bean.username}" label="UserName" binding="#{bean.component}"/>
<h:message for="username" />
<h:commandButton value="Submit" action="#{bean.actionMethod}" />
在你的bean类中,
private UIComponent component;
public UIComponent getComponent() {
return component;
}
public void setComponent(UIComponent component) {
this.component = component;
}
public String actionMethod() {
if (!validate()) {
return null;
}
// do your action method logic
}
private boolean validate() {
FacesContext context = FacesContext.getCurrentInstance();
//do validation for your fields and add to faces messages
FacesMessage msg = new FacesMessage(severity, summary, detail);
context.addMessage(component.getClientId(), msg);
// do for other fields
return status;
}
请参阅此内容以获取组件客户端ID
How to add a message to a specific component from JSF backing bean