JSF 2.1条件字段验证

时间:2011-07-22 21:38:02

标签: java jsf java-ee jsf-2 richfaces

我有以下JSF 2.1页面

<h:selectOneRadio value="#{userBean.newUser}">
    <f:selectItem itemValue="0" itemLabel="new User" />
    <f:selectItem itemValue="1" itemLabel="existing User" />
</h:selectOneRadio>
<br />
<h:inputText value="#{userBean.customerId}" id="customerId" />
<h:message for="customerid" />
<br />
<h:inputText value="#{userBean.firstName}" id="firstName" />
<h:message for="fisrtName" />
<br />
<h:inputText value="#{userBean.lastName}" id="lastName" />
<h:message for="lastName" />
<br />
<h:commandButton value="Submit" action="#{userBean.login}" />

这是我的豆子:

public class UserBean {

    private String customerId;
    private String newUser= "0";
    private String firstName;
    private String lastName;

    // Getters and seeters ommited.
}

我需要通过以下方式验证此表单:

如果选择“新用户”单选按钮,则应验证所有表单输入。如果选择“现有用户”,我只需要验证客户ID。

我尝试了Hibernate验证,并且我还通过实现javax.faces.validator.Validator接口尝试了自定义验证器。

我能以某种方式实现这样的功能吗?

1 个答案:

答案 0 :(得分:3)

您可以编写custom validator来检查父UI组件,并仅在特定条件下执行验证。这很复杂。也许看看ExtVal及其@SkipValidation注释?

@SkipValidation("#{person.role eq 'admin'}")
@Required
@Equals("person.password")
@NotEquals("password")
private String oldPassword;