Mah*_*leh 7 jsf hibernate-validator bean-validation jsf-2
我试图在一个字段进行多次验证
@NotBlank(message = "{name.required}")
@Max(value = 25, message = "{long.value}")
public String name;
Run Code Online (Sandbox Code Playgroud)
JSF:
<h:inputText id="name" value="#{person.name}" size="20">
</h:inputText>
<h:message for="name" style="color:red" />
Run Code Online (Sandbox Code Playgroud)
但是当我将该字段留空时,它会显示两条错误消息.
任何想法如何处理这两种情况,独立验证空和最大长度.
如果您的JSF 2配置解读空提交值""并没有null那么:
该@NotBlank验证返回false,因为你的注释字符串为空.
该@Max验证返回false因为根据hibernate执行(我猜你是使用您以前的职位Hibernate实现基地).
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
//null values are valid
if ( value == null ) {
return true;
}
try {
return new BigDecimal( value ).compareTo( BigDecimal.valueOf( maxValue ) ) != 1;
}
catch ( NumberFormatException nfe ) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,valueString参数包含空值(""),BigDecimal(String)构造函数抛出异常,然后验证器返回false.
您有两种可能的解决方案:
interpret empty submitted values as null(或)name类型更改为数字而不是字符串.| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |