项目阶段[开发]:未处理的消息 - JSF

时间:2012-12-25 02:05:29

标签: validation jsf

我得到两条验证消息,一条是正确的,然后是一条在表格的顶部,当鼠标悬停时,说Project Stage [开发]:未处理的消息,我该如何隐藏此消息?

                 <h:outputLabel for="username">Please enter your username: </h:outputLabel>
            <h:inputText id="username" value="#{user.id}" required="true">
                <f:ajax event="blur" render="usernameMessage" />
            </h:inputText>
            <h:message id="usernameMessage" for="username" />

userBean.java

private static final long serialVersionUID = 1L;

    @NotNull (message = "The username can not be blank")
    @Size(min = 6, max=12, message = "Please enter a valid username (6-12 characters)")
    private String id;

    public String getId() {
        return id;
    }

的web.xml

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

1 个答案:

答案 0 :(得分:3)

这是一个开发警告,应该表明开发人员犯了错误。您根本不应该有未处理的面部消息。提供正确的<h:message>并确保它也在ajax请求上更新。

<h:message for="Username" />

或者,至少提供显示所有消息的通用<h:messages>

<h:messages/>

将JSF项目阶段设置为Production后,此警告(以及整个未处理消息列表)将消失。

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

或者只是完全删除整个上下文参数;它默认为Production


对具体问题

无关,您的<h:outputLabel for>属性错误,与输入组件的ID不匹配。或者,输入组件的ID不遵循标准的HTML / CSS代码约定。它应该是camelCase,而不是TitleCase。所以,使用

<h:outputLabel for="username" ... />
<h:inputText id="username" ... />
<h:message for="username" ... />

这毕竟 也是您具体问题的潜在主要原因。您已正确使用<h:message for="username"/>,但由于输入组件使用了无效的组件ID Username,因此无法显示该消息。