2016-01-01 88 views
1

我使用PF 5.3更新,與JSF 2.2如何防止號碼:從消息時更新全球PrimeFaces咆哮

我有一個全球性的號碼:咆哮將在backBean更新,問題是,無論何時我更新全局p:growl,其他p:消息都會以相同的數據更新。我想要一種方法來只更新後臺Bean中action方法中的全局咆哮,而其他p:消息不應該更新。

XHTML:

<h:body> 
    <p:growl id="growlGeneralMessages" showDetail="true" sticky="true" globalOnly="true" /> 
    <h:form id="register_new_student" enctype="multipart/form-data" > 
     <p:messages autoUpdate="true" /> 
     <p:commandButton id="new_student_action" value="Add" update="register_new_student_panel" validateClient="true" action="#{teacherPresentation.newStudentAction()}" /> 
    </h:form> 
</h:body> 

回豆:

public String newStudentAction() { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Wrong username or password!", ""); 
    context.addMessage(null, message); 
    context.getExternalContext().getFlash().setKeepMessages(true); 

    return "teacher.xhtml?faces-redirect=true"; 
} 

我想兩件事情,但他們沒有工作:

1至從對刪除該屬性自動更新:消息(失敗)

2-在addMessage方法中指定客戶端ID

context.addMessage(null,message); - > context.addMessage(「growlGeneralMessages」,message); (失敗過)

回答

1

我認爲你有兩個選擇來控制它

密鑰選項

兩者p:growlp:messagesfor屬性,它可以讓您綁定該組件的關鍵。你可以控制你要顯示的每個組件上,使用該密鑰作爲FacesContext.addMessage()

clientId參數什麼樣的信息呢?這就是我的意思是:

<p:growl for="growlKey"/> 

而且在BackBean:

facesCtx.addMessage("grwolKey", facesMsg); 

嚴重性選項

同樣,這兩個組件都有一個severity參數,可讓您控制顯示哪些消息。例如,您可以使用info作爲消息,或者使用error作爲消息。

創建FacesMessage時,您可以使用FacesMessage.Severity指定嚴重性。

FacesMessage facesMsg = new FacesMessage(
    FacesMessage.SEVERITY_ERROR, "Your title", "Your Message") 

希望它有幫助!

相關問題