【问题标题】:h:messages gives no outputh:messages 没有输出
【发布时间】:2011-04-13 19:32:13
【问题描述】:

我正在学习 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)但没有显示任何消息。我做错了什么?

【问题讨论】:

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


    【解决方案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,但理论上它应该会触发。试试看吧。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 2015-05-11
        • 2018-03-19
        • 2021-02-08
        • 2021-12-29
        • 2022-01-18
        • 2022-01-20
        • 2013-03-07
        • 2013-03-06
        相关资源
        最近更新 更多