2012-03-29 73 views
8

嗨im jsf環境中的新類型,即時嘗試更新primefaces咆哮,然後重定向到commandButton操作的頁面。如何使用Primefaces'p:咆哮並重定向到一個頁面

<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"; 

這隻redirectme的頁面,但犯規給我咆哮消息,我測試了一下,如果改變我的方法不返回消息確實顯示的頁面。

我正在嘗試更新即時消息重定向頁面的咆哮聲,但那不可能我猜。

我認爲,當重定向我失去了更新功能,因爲我現在在新的頁面。

有沒有辦法告訴jsf先做更新然後重定向?

希望你能幫助我, 在此先感謝

回答

42

消息重定向過程中丟失。您可以使用閃光燈保留消息。

FacesContext context = FacesContext.getCurrentInstance(); 
context.getExternalContext().getFlash().setKeepMessages(true); 
+8

注意,這種方法有一個特殊的錯誤與鑽嘴魚科用時:它不會工作,然後重定向進入不同的路徑。如果當前頁面和目標頁面位於相同路徑(URL中的同一文件夾),那麼它將正常工作。另見http://java.net/jira/browse/JAVASERVERFACES-1877 – BalusC 2012-03-29 20:26:06

1

添加另一個咆哮頁面重定向

這樣 <p:growl id="growlmsg2" showDetail="true" sticky="true" autoUpdate="true"/>

0

因爲Flash有BUG,我的解決方案是:

從你的行動方法返回之前,添加以下一個分開的重定向按鈕,將顯示味精後將被點擊:

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. 
}