Очистить поле формы при сбое проверки в другом поле - PullRequest
1 голос
/ 08 декабря 2011

Мне нужно очистить вводимый текст из валидатора, если валидация в другом поле не удалась.Я пытался использовать setSubmittedValue("") или setValue(""), но он не работает.

Причина, по которой я хочу это сделать, заключается в том, что поле является полем капчи, и если проверка в другом поле не проходит, страницабудет отображаться с новым кодом капчи, и я хочу, чтобы поле ввода было пустым.

форма:

<h:form id="form">
   <h:inputText id="otherfieldid" required="true"
        requiredMessage="Please enter"
        validator="#{bean.validateA}"
        validatorMessage="Validation fails" />

    <h:inputText id="fieldid" required="true"
        requiredMessage="Please enter"
        validator="#{bean.validateB}"
        validatorMessage="Validation fails" />
</h:form>

Bean:

@ManagedBean
@ViewScoped
public Bean {
    public void validateA(FacesContext context,
                UIComponent componentToValidate,
                Object value)
                throws ValidatorException {
        /* validation codes */
    }

    public void validateB(FacesContext context,
                UIComponent componentToValidate,
                Object value)
                throws ValidatorException {

        HtmlInputText ht = 
            (HtmlInputText) context.getViewRoot().findComponent(":form:otherfieldid");

        if (ht != null) {           
            if (ht.getValidatorMessage() != null 
                    || !"".equals(ht.getValidatorMessage())) {              
                ((HtmlInputText) componentToValidate).setSubmittedValue("");
                return;
            }
        }
        /* validation codes */
    }
}

1 Ответ

0 голосов
/ 08 декабря 2011

где ваша value="#{yourBeam.field} привязка для полей ввода?Должно быть возможно просто установить это поле в Бине на ноль, если проверка не удалась ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...