h:消息没有输出

时间:2010-09-17 16:06:18

标签: jsf jsf-2 java-ee-6 jpa-2.0 bean-validation

我正在学习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的action方法中返回null)但没有显示消息。我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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,但理论上应该如此。试一试。