Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 如何验证JSF中的多个字段?_Validation_Jsf - Fatal编程技术网

Validation 如何验证JSF中的多个字段?

Validation 如何验证JSF中的多个字段?,validation,jsf,Validation,Jsf,我正在使用JSF进行验证,我看到了许多非常基本的逻辑示例。坦白地说,我把它们和HelloWorld示例放在同一个类别中。我无法想象将错误消息放在xhtml文件中,对每个验证字段使用单独的验证方法,或者使用bean验证 我想做的是,在支持bean上有一个方法,该方法将对每个字段执行验证,记录由i18n属性文件中的键驱动的错误消息 这能做到吗?如果是这样,我们如何将该方法注册为验证方法,如何获取提交的字段值进行评估,以及如何注册错误消息 <h:inputText id="username" v

我正在使用JSF进行验证,我看到了许多非常基本的逻辑示例。坦白地说,我把它们和HelloWorld示例放在同一个类别中。我无法想象将错误消息放在xhtml文件中,对每个验证字段使用单独的验证方法,或者使用bean验证

我想做的是,在支持bean上有一个方法,该方法将对每个字段执行验证,记录由i18n属性文件中的键驱动的错误消息

这能做到吗?如果是这样,我们如何将该方法注册为验证方法,如何获取提交的字段值进行评估,以及如何注册错误消息

<h:inputText id="username" value="#{bean.username}" label="UserName" binding="#{bean.component}"/>
<h:message for="username" />
<h:commandButton value="Submit" action="#{bean.actionMethod}" />
请参阅此以获取组件客户端id


我认为
组件
用于将错误消息绑定到特定字段,以便将其显示在该字段旁边。我没有这样的要求-我所有的错误消息都显示在表单的顶部。因此,我没有使用
组件
。您所展示的方法(
actionMethod()
中的
validate()
)回答了我的问题,因此我接受这一解决方案。谢谢
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;
}