2

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

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

用户Bean.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>
4

1 回答 1

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

于 2012-12-25T02:19:10.367 回答