我正在使用 JSF 2.0 和 Glassfish v3。我正在测试 JSR303 bean 验证的功能,所以我创建了一个验证器,它实现ConstraintValidator
然后在我想要验证的属性上注释它。
它工作正常,但它显示 Glassfish 默认错误页面。我不希望显示此内容,我希望将消息显示在 a<h:outputText>
或其他内容中。
有谁知道如何实现这一目标?
这是我的验证器方法:
@Override
public boolean isValid(String searchArg, ConstraintValidatorContext ctx) {
boolean searchArgCorrect = true;
FacesMessage msg;
if(searchArg!=null) {
ctx.disableDefaultConstraintViolation();
if(searchArg.length() < 3) {
ctx.buildConstraintViolationWithTemplate("Searcharg is too short").addConstraintViolation();
searchArgCorrect=false;
msg = new FacesMessage(
FacesMessage.SEVERITY_ERROR,
"Searcharg is too short", null);
throw new ValidatorException(msg);
}
}
return searchArgCorrect;
}
PS:我知道有更简单的方法来验证字符串的长度,但上面的代码片段仅用于演示/测试目的。我对验证者有另一个计划。