2012-03-29 13 views
8

hiim niby nowy w środowisku jsf, próbuję zaktualizować warczenie, a następnie przekierować do strony z działania commandButton.Jak korzystać z P: grow i PrimFaces do strony

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

Zarządzany kod fasola jego

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

To tylko redirectme ​​do strony, ale robi mi pokazać wiadomość Growl, i przetestowane, że jeśli zmieni moje metody nie powrócić na stronę komunikat jest wyświetlany.

Próbowałem zaktualizować warczenie strony, która przekierowuję, ale to niemożliwe, jak sądzę.

Myślę, że po przekierowaniu straciłem funkcję aktualizacji, ponieważ jestem teraz na nowej stronie.

Czy istnieje sposób, aby powiedzieć jsf, aby najpierw zrobić aktualizację, a następnie przekierowanie?

Spodziewać się można mi pomóc, góry dzięki

Odpowiedz

42

Wiadomości zgubić podczas przekierowania. Możesz użyć lampy błyskowej, aby zachować wiadomości.

Dodaj następujący przed powrotem z metody działania:

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

Należy zauważyć, że takie podejście ma szczególny problem w przypadku korzystania z Mojarra: to nie zadziała wtedy przekierowanie idzie do innej ścieżki. Jeśli bieżąca i docelowa strona znajdują się na tej samej ścieżce (ten sam folder w adresie URL), to będzie działać poprawnie. Zobacz także http://java.net/jira/browse/JAVASERVERFACES-1877 – BalusC

1

Dodaj kolejny ryk do strony przekierować

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

0

Ponieważ Flash posiada błąd, moje rozwiązanie jest, aby oddzielony przycisk przekierowania, który zostanie wyświetlony po wyświetleniu komunikatu:

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> 

Bean:

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. 
} 
Powiązane problemy