如何显示撇号' in faces消息通过OmniFaces添加消息#addal

时间:2016-08-19 10:28:10

标签: jsf message omnifaces apostrophe

我正在使用p:messages显示错误,而不是在primefaces XHTML页面中显示用户界面。 我想显示像员工一样的字符串。当我尝试使用OmniFaces Messages实用程序时,它没有显示。有关详细信息,请查看以下代码。

XHTML:

<p:messages id="globalMessages" autoUpdate="false" closable="true"
                escape="true" showDetail="true"/>

豆:

Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee's");

演示:

enter image description here

当我使用普通FacesContext#addMessage()

时,它可以正常工作
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "PrimeFaces Rocks employ's"));

演示:

enter image description here

但我必须使用Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee's");

这是如何引起的,如何在邮件中显示单引号?

1 个答案:

答案 0 :(得分:3)

正如javadoc中所述,OmniFaces MessageFormat的默认解析程序使用<h:outputFormat> API来格式化消息,就像Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee''s"); 和资源包的工作方式一样。

MessageFormat API中,单引号是一个特殊字符,如果要按原样表示,则需要使用另一个字符进行转义。

Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee’s");

替代方案是改为使用卷曲引号。

Messages.setResolver(new Messages.Resolver() {
     public String getMessage(String message, Object... params) {
         return message;
     }
 });

或者注册一个自定义消息解析器,它对消息不起作用。

Messages

但是你不能再使用消息参数了。

更新:如果首先没有消息参数,我刚刚改进了{{1}}实用程序,以便不执行任何格式化。您可以在this commit中看到增强功能。它可以在今天最新的2.5-SNAPSHOT中找到。