2013-10-23 68 views
0

我想顯示的是從EJB與全球發出錯誤信息:JSF H:消息使全球信息不重新呈現

FacesContext.getCurrentInstance().addMessage(
        null, 
        new FacesMessage(FacesMessage.SEVERITY_ERROR, 
          "Please select a path first", "title")); 

對現在的JSF具有下面的代碼:

<h:messages globalOnly="true"/> 

上述內容不起作用,因爲JSF頁面未被重新渲染。 通知我能夠使用primefaces作出上述工作,如果我用下面的替代JSF代碼:

<p:messages globalOnly="true" showDetail="true" autoUpdate="true" closable="true" /> 

但是我不想用primefaces,我想一個純粹的JSF的解決方案。 注意,我不希望h:消息在表單內,因爲沒有按鈕可以點擊,我希望h:消息能夠從EJB自動更新,但不使用primefaces。

+0

R你着名的莎拉弗格森請不要爲我的評論:) – BholaVishwakarma

+0

我是「一個」着名的莎拉..但不是你可能的意思:P –

+0

爲防萬一,你也可以使用''帶'AJAX'來更新'',它不包含'autoupdate =「true」' – alexander

回答

2

你必須呈現<h:messages />否則它不會顯示。 您可以通過呈現來自managedbean的消息來實現此目的。

<h:messages id="globalMessage" /> 

而在你managedBean您放置代碼以使你的消息

FacesContext.getCurrentInstance().addMessage(
       null, 
       new FacesMessage(FacesMessage.SEVERITY_ERROR, 
         "Please select a path first", "title")); 

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds() 
.add("globalMessage"); 

之後,但要確保你有正確的ID來進行渲染。