Jsf h:消息没有输出
我正在学习bean验证。我用用户名和密码输入字段创建了一个简单的表单,这些字段通过支持bean绑定到模型(用户)属性用户名和密码。我已经用注释标记了它们:Jsf h:消息没有输出,jsf,jsf-2,java-ee-6,jpa-2.0,bean-validation,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; 现在,在这个表单的页面上,我把放在..里面。我提交空表
@Id
@NotNull(message="Username cannot be empty")
private String username;
@NotNull(message="Password cannot be empty")
private String password;
现在,在这个表单的页面上,我把
放在..
里面。我提交空表单,我被重定向到同一页面(我在backingbean的action方法中返回null),但没有显示任何消息。我做错了什么?解决方案是使用@NotNull
,而不是使用@Size
,因为空输入字段实际上是空字符串,而不是null,如果您想让@NotNull
工作,您确实需要让JSF将空字符串设置为null
。在JSF2.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>
javax.faces.explait_EMPTY_STRING_SUBMITTED_VALUES_为_NULL
真的
根据经验,我无法判断这是否会触发@NotNull
,但理论上应该如此。试试看