0

我正在使用 GlassFish 3.1.2.2,并且我想定义一个通用验证消息模板以不包含字段标识符/标签。

我在 StackOverflow 上找到了几个相关主题,但这些解决方案(都涉及javax.faces.validator.BeanValidator.MESSAGE)都不起作用。

1) 将 ValidationMessages.properties 放在类路径的根目录中(在我的情况下,它放在我的 WAR 文件的 WEB-INF/classes 中) - 没有效果

2) 在 faces-config.xml 中的 <message-bundle> 中定义 ValidationMessages.properties 文件 - 无效

3) 在 faces-config.xml 中的 <resource-bundle> 中定义 ValidationMessages.properties 文件 - 无效

我测试了资源包是否正常工作,因为我可以在 EL 中使用它,例如:#{text['javax.faces.validator.BeanValidator.MESSAGE']} 其中text是资源包定义中的我的 var。

注意:我不想在我的应用程序中的每个输入字段上提供 validatorMessage 属性。我只想为整个应用程序设置一次自定义消息。

重要提示:此处Mkyong.com提供的解决方案效果不佳。

注意:我声明使用 JSF 2.0,Glassfish 3.1.2.2 肯定支持这一点。 注意:我不想在托管 bean 中实现验证,而不是使用 JSF 验证/Bean 验证。

4

2 回答 2

2

我在回答自己:要为必填字段验证设置自定义消息,您需要在消息包文件中设置以下属性(消息包在 faces-config.xml 中由 <message-bundle> 标签定义):

1) javax.faces.component.UIInput.REQUIRED_detail - 默认情况下显示在 h:message 或 h:messages 标签中的消息 - 或者当 showDetail=true 时(默认情况下)。一般来说就足够了。

2) javax.faces.component.UIInput.REQUIRED - 当 h:message 和 h:messages 标签中的 showSummary=true 时显示的消息。如果您在 h:message/h:messages 中显示摘要,请另外设置。

注意:javax.faces.validator.BeanValidator.MESSAGE不负责必需字段错误消息。

于 2013-04-17T09:11:54.840 回答
0

添加<h:messages>您的 jsp/xhtml 并根据条件显示来自托管 Bean 的错误消息

FacesContext ctx = FacesContext.getCurrentInstance();
FacesMessage msg =new FacesMessage(FacesMessage.SEVERITY_INFO, errorMessage,detailMessage);
ctx.addMessage(null, msg);
于 2013-04-16T09:37:34.160 回答