Условная проверка полей JSF 2.1 - PullRequest
5 голосов
/ 23 июля 2011

У меня есть следующая страница 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.
}

Мне нужно проверить эту форму следующим образом:

Если выбран переключатель «новый пользователь», все входные данные формы должны быть проверены.Если выбран «существующий пользователь», мне нужно проверить только идентификатор клиента.

Я пробовал проверку гибернации, а также пользовательский валидатор, используя интерфейс javax.faces.validator.Validator.

Могу ли я добиться такогофункциональность как-то?

1 Ответ

3 голосов
/ 23 июля 2011

Вы можете написать пользовательский валидатор , который проверяет родительский компонент пользовательского интерфейса и выполняет проверки только при определенных условиях.Это довольно сложно.Может быть, посмотрите на ExtVal и его @SkipValidation аннотацию?

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