我有很多代码需要标准的验证 像这样的东西
<h:inputText required="true" requiredMessage="it is required!"/>
现在,我需要更改RequiredValidator的行为:将错误消息放入上下文,但不要中断循环。可能是要做更多的事情。
我尝试添加具有相同ID的自定义验证程序,但它不起作用。
<validator>
<validator-id>javax.faces.Required</validator-id>
<validator-class>my.RequiredValidator</validator-class>
</validator>
有可能吗?
答案 0 :(得分:0)
空字段未提交给验证程序。我找不到匹配的文档,但我测试了环境,请查看Get empty strings from <h:inputText> go through validation。
这个问题也处理空字符串输入,BalusC说:
JSF 1.x默认不会在空字段上激活验证器。
好的,它是关于JSF 1.X的,但它似乎并没有改变。
验证器会中断请求,但这不是您想要的。那么根据您的需要使用setter方法可以解决这个问题吗?
忽略required
中的inputText
属性,并在textInput的setter中添加FacesMessage
。假设确定值为#{myBean.description}
,则设置器可能如下所示:
public void setDescription(String value) {
String _tmp = value.trim();
if (_tmp.equals("")) {
FacesContext ctx = FacesContext.getCurrentInstance();
ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR
, "Error:", "Input must not be empty"));
this.description = null;
return;
}
this.description = _tmp;
}