а такжена той же странице - PullRequest
5 голосов
/ 26 декабря 2011

Я хочу использовать <p:messages> для отображения сообщения об ошибке, используйте <p:growl> для отображения сообщений об успехе.В компоненте поддержки:

FacesContext context = FacesContext.getCurrentInstance(); 
context.addMessage(null, new FacesMessage(title, msg));

Но я обнаружил, что добавляю сообщение в компоненте поддержки, <p:messages> и <p:growl> отображают его.

Любое предложение.

Ответы [ 6 ]

12 голосов
/ 26 декабря 2011

На демонстрационной странице рычагов PrimeFaces они упоминали, что: " Growl просто заменяет компонент h: messages. ". Боюсь, что вы не сможете достичь своей цели, потому что рычание также отобразит все FacesMessage в представлении.

Однако, если вы отмените свое требование - отобразите ошибки с помощью <p:growl> и отобразите успешные сообщения с помощью <p:message>, вы можете добиться этого следующим образом:

<p:message id="successMsg" for="successMsg" />

@ManagedBean
@RequestScoped
public class MrBean {

   public void doSomething() {
      FacesContext context = FacesContext.getCurrentInstance(); 

      if (failed) {
         context.addMessage(null, new FacesMessage("Failed", "Sry boss! I have failed.")); 

      } else {
         context.addMessage("successMsg", new FacesMessage("Successful", "Hey boss! I did it!"));

      }
   }

}
10 голосов
/ 25 марта 2013

Похоже, что в PrimeFaces 3.3 вы можете делать то, что хотели:

http://blog.primefaces.org/?p=1894

Теперь вы можете сделать:

<p:messages severity="error" />
<p:growl severity="info, warn" />

с

context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error Title", "Error Message"));
context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Success Title", "Success Message"));
9 голосов
/ 06 июля 2013

JSF:

<p:messages for="somekey" />
<p:growl for="anotherkey" />

Bean:

context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "PrimeFaces Rocks"));
context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "Always bet on Prime"));a
context.addMessage("anotherkey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "PrimeFaces is developed by Chuck Norris"));

Это просто отлично работало со мной!

1 голос
/ 25 апреля 2013

Это может быть старый вопрос, но, может быть, это еще актуально:

У меня возникла такая же ситуация, я решил, используя оператор for в каждом теге

<p:growl id="someid" for="growl" />
<p:messages id="messageid" for="messages" />

и поддерживающий боб:

context.addMessage("growl", new FacesMessage("Successful", "to growl"));
context.addMessage("messages", new FacesMessage("Successful", "to messages"));

просто как примечание: если вы добавите autoupdate="true", то сообщения будут сброшены как для рычания, так и для сообщений (если вы добавите сообщения к рычанию, сообщения будут очищены)

1 голос
/ 08 января 2013

Вы можете использовать ap: growl, который не отображается при наличии только ошибок валидации.

<p:growl 
    id="growl" 
    sticky="true" 
    showDetail="true" 
    rendered="#{not facesContext.validationFailed}"/>
0 голосов
/ 15 октября 2014

Я добавил отдельную панель сообщений для рычания и сообщений и обновляю эту панель, когда я отправляю форму следующим образом:

 <p:panel id="messages">
    <p:messages for="errorMsg" showDetail="true" />
    <p:growl for="infoMsg" showDetail="true" />
    <p:growl globalOnly="true" />
 </p:panel>

<p:commandButton id="submit" value="Submit" update="messages" actionListener="#{yourManagedBean.submit}" />

В ManagedBean

     // display submit info - showDetail="true" in infoMsg will show details message
     FacesMessage infoMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Submit Info", "Your details info message." );
     FacesContext.getCurrentInstance().addMessage("infoMsg", infoMsg);

     // display error message - e is instance of Exception
     FacesMessage errMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Occured", e.getMessage());
     FacesContext.getCurrentInstance().addMessage("errorMsg", errMsg);


     // display some generic message (with no details in growl)
     FacesMessage genericMsg = new FacesMessage("Generic Message");
     FacesContext.getCurrentInstance().addMessage(null, genericMsg);

Я проверил это, используя Primefaces 5.0.

Наслаждайтесь!

...