0 java validation jsf bean-validation wildfly
假设我有一个带有文本字段的表,名为player,它是null.所以允许空值,但如果不是null(有一个值),文本/字符串的大小必须在10到100之间.我有这个开始:
@Column(name = "player", nullable = true)
@Size(min = 5, max = 100)
private String player;
Run Code Online (Sandbox Code Playgroud)
但是当将字段设置为null时,JSF页面会抛出验证错误.
有没有办法让Size验证器忽略空值?
如果playerstring为null,则Size约束不会抛出任何异常.最好不要在值为null时抛出错误(NotNull约束或NotEmpty约束除外).事实上,播放器bean属性值可能是一个空字符串而不是空值,因此约束会引发异常,因为当组件中没有输入任何内容时,JSF会发送一个空字符串.为了使JSF发送空值,您必须在web.xml文件中添加一些内容,如Java EE教程中所述:
为了使Bean Validation模型按预期工作,必须在Web部署描述符文件web.xml中将上下文参数javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为true:
<context-param>
<param-name>
javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
</param-name>
<param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
如果最终(取决于版本)参数无法按预期工作,请参阅此问题以进行故障排除.
编辑:
您也可以尝试不应用前一个参数,而是使用Pattern类似于Regex模式的约束(^$|^[a-zA-Z]{3,7}$).