2016-08-19 65 views
4

我正在使用p:messages顯示錯誤在primefaces XHTML頁面沒有UI。 我想顯示字符串像員工。當我試圖使用OmniFaces Messages工具,它沒有顯示。更多細節請看下面的代碼。如何在通過OmniFaces消息添加面孔消息中顯示撇號'add#

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");

這是怎麼造成的,我怎麼能顯示該消息中的單引號?

回答

3

正如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中看到增強功能。它在今天最新的2.5-SNAPSHOT中可用。

+0

謝謝@BalusC,它的工作和 –

+0

不客氣獲取有關Omniface一些knowladge。 – BalusC