如何在通过 OmniFaces Messages 添加的面孔消息中显示撇号 '#add
How to display apostrophe ' in faces message added via OmniFaces Messages#add
我正在使用 p:messages
在 primefaces XHTML
页面中显示错误编号 UI。
我想像员工一样显示字符串。当我尝试使用 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");
这是怎么造成的,如何在消息中显示单引号?
如 javadoc 所述,OmniFaces Messages
的默认解析器使用 MessageFormat
API 来格式化消息,就像 <h:outputFormat>
和资源一样捆绑工作。
在MessageFormat
API中,单引号是一个特殊字符,如果要按原样表示,需要用另一个转义。
Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee''s");
替代方法是使用弯引号。
Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee’s");
或者注册一个不处理消息的自定义消息解析器。
Messages.setResolver(new Messages.Resolver() {
public String getMessage(String message, Object... params) {
return message;
}
});
但是你不能再使用消息参数了。
更新:我刚刚改进了 Messages
实用程序,如果首先没有消息参数,则不执行任何格式化。您可以在 this commit. It's available in today's latest 2.5-SNAPSHOT.
中看到增强功能
我正在使用 p:messages
在 primefaces XHTML
页面中显示错误编号 UI。
我想像员工一样显示字符串。当我尝试使用 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");
这是怎么造成的,如何在消息中显示单引号?
如 javadoc 所述,OmniFaces Messages
的默认解析器使用 MessageFormat
API 来格式化消息,就像 <h:outputFormat>
和资源一样捆绑工作。
在MessageFormat
API中,单引号是一个特殊字符,如果要按原样表示,需要用另一个转义。
Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee''s");
替代方法是使用弯引号。
Messages.add(FacesMessage.SEVERITY_ERROR, "global", "employee’s");
或者注册一个不处理消息的自定义消息解析器。
Messages.setResolver(new Messages.Resolver() {
public String getMessage(String message, Object... params) {
return message;
}
});
但是你不能再使用消息参数了。
更新:我刚刚改进了 Messages
实用程序,如果首先没有消息参数,则不执行任何格式化。您可以在 this commit. It's available in today's latest 2.5-SNAPSHOT.