2010-09-17 108 views
0

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

@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),但没有消息正在显示。我究竟做错了什么?

回答

1

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

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,但在理论上它应该。试一试。