我得到两条验证消息,一条是正确的,然后是一条在表格的顶部,当鼠标悬停时,说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>
答案 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
,因此无法显示该消息。