当其他字段的验证失败时,我需要从验证器清除输入文本。我已尝试使用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>
豆:
@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 */
}
}
答案 0 :(得分:0)
输入字段的value="#{yourBeam.field}
绑定在哪里?如果验证失败,应该可以将Bean中的此字段设置为null ...