14

こんにちは、jsf環境ではちょっと新しいですが、primefacesの唸り声を更新してから、commandButtonアクションからページにリダイレクトしようとしています。

 <p:commandButton value="Guardar"  action="#{AgendamientoMBean.procesaAgendamientoJ()}" 
 update="growlDetalle" />  

マネージドBeanコード

   FacesContext context = FacesContext.getCurrentInstance();
   context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, descripcion, detalle));
   ....
   ....
    return "agp_bandeja_citas_llamadas?faces-redirect=true";

これはページにリダイレクトするだけですが、うなり声のメッセージは表示されません。メソッドを変更してページを返さない場合、メッセージが表示されることをテストしました。

私はリダイレクトしているページのうなり声を更新しようとしていましたが、それは不可能だと思います。

リダイレクトすると、新しいページにいるため、更新機能が失われたと思います。

jsfに最初に更新を行ってからリダイレクトするように指示する方法はありますか?

よろしくお願いします。

4

3 に答える 3

49

リダイレクト中にメッセージが失われます。フラッシュを使用してメッセージを保持できます。

アクションメソッドから戻る前に、以下を追加してください。

FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getFlash().setKeepMessages(true);
于 2012-03-29T20:00:55.780 に答える
1

リダイレクトするページに別のうなり声を追加する

このような <p:growl id="growlmsg2" showDetail="true" sticky="true" autoUpdate="true"/>

于 2014-07-08T07:37:37.470 に答える
-1

Flashにはバグがあるため、私の解決策は、msgを表示した後にヒットする別のリダイレクトボタンを作成することです。

HTML:

<h:form prependId="false">
    <p:growl />
    <p:button outcome="gotoABC" id="rdr-btn" style="display: none;" />
    <p:commandButton action="#{bean.process()}" update="@form" />
</form>

豆:

public void process(){
    addInfoMsg(summary, msgDetail); //Add msg func
    RequestContext.getCurrentInstance().execute("setTimeout(function(){ $('#rdr-btn').click(); }, 3000);"); // 3 seconds delay. I put the script in Constants to config later.
}
于 2016-11-25T04:23:26.607 に答える