2013-05-14 2 views
2

У меня есть этот CommandButton:дисплей Growl, когда страница загружается primefaces jsf2

<p:commandButton value="Enregistrer" action="#{reglementClientMB.ajouter}" 
      process="@this @form" update="@form" > 
      <f:setPropertyActionListener target="#{reglementClientMB.est_ajouter}" value="false" /> 
      </p:commandButton> 

метод действия возврата на другую страницу, я хочу, чтобы отобразить один p:growl, когда следующая страница загружается

Я тестировал на положить, что это конструктор его управляемого компонента, но рычание отображается ниже данных на странице

FacesContext.getCurrentInstance().addMessage(
         null, 
         new FacesMessage(FacesMessage.SEVERITY_INFO, "" 
           + "Confirmation", "Réglement crée avec sucée")); 

       RequestContext.getCurrentInstance().update("messages"); 

как можно достичь этого

спасибо заранее

ответ

9

конструктор бина может быть слишком поздно для работы, если <p:growl> оказывается перед боб был построен впервые. Например.

<p:growl /> 
... 
<h:outputText value="#{bean.something}" /> 

Это будет работать только тогда, когда боб построен до <p:growl> визуализируется.

<h:outputText value="#{bean.something}" /> 
... 
<p:growl /> 

Чтобы решить вашу конкретную проблему, вам нужно будет выполнить задание в представлении pre view view.

<f:event type="preRenderView" listener="#{bean.init}" /> 

С:

public void init() { 
    // Add the desired message here. 
} 
+1

я решил эту проблему путем размещения сообщения/рычание в конце моего шаблона кода .. это то, что хорошо/приемлемая практика? или я собираюсь столкнуться с проблемами с этим? – Jenson

+0

@Jenson: Как уже было сказано, вам нужно убедиться, что сообщение добавлено до отображения целевого компонента сообщения. Какой путь вы выбираете, зависит от вас. – BalusC