0

我正在学习 bean 验证。我创建了带有用户名和密码输入字段的简单表单,这些输入字段通过支持 bean 绑定到模型(用户)属性用户名和密码。我用注释标记了它们:

@Id
@NotNull(message="Username cannot be empty")
private String username;
@NotNull(message="Password cannot be empty")
private String password;

现在在我放入的那个表格的页面<h:messages/><h:form>...</h:form>。我提交空表单,我被重定向到同一页面(我在支持 bean 的操作方法中返回 null)但没有显示任何消息。我究竟做错了什么?

4

2 回答 2

1

如果您想开始@NotNull工作,您确实需要让 JSF 将空字符串设置为null. 在 JSF 2.0 中,您可以通过将以下上下文参数添加到web.xml

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

我无法从经验中判断这是否会触发@NotNull,但理论上应该。试试看。

于 2010-09-17T18:46:37.843 回答
1

解决方案不是使用@NotNull,而是使用,@Size因为空输入字段实际上是空字符串而不是null

于 2010-09-17T16:28:11.637 回答