我正在使用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");
演示:
当我使用普通FacesContext#addMessage()
:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "PrimeFaces Rocks employ's"));
演示:
但我必须使用Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee's");
这是如何引起的,如何在邮件中显示单引号?
答案 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中找到。