【问题标题】:Project Stage[Development]: Unhandled Messages - JSF项目阶段[开发]:未处理的消息 - JSF
【发布时间】:2012-12-11 05:12:46
【问题描述】:

我收到两条验证消息;一个正确,然后一个在表单顶部,当鼠标悬停在上面时,它会显示“项目阶段[开发]:未处理的消息”。如何隐藏此消息?

<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>

【问题讨论】:

    标签: validation jsf


    【解决方案1】:

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

    <h:message for="Username" />
    

    或者,至少提供一个通用的&lt;h:messages&gt; 来显示所有消息。

    <h:messages/>
    

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

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

    或者干脆删除整个上下文参数;它已经默认为Production


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

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

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

    【讨论】:

    • 我遇到了类似的错误。为了解决这个问题,我必须将 h:message 放在它所针对的组件之后。有没有办法将 h:message/s 放在组件之前,以便它呈现在它上面?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多