Мне нужно очистить вводимый текст из валидатора, если валидация в другом поле не удалась.Я пытался использовать 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 */
}
}