2012-03-29 34 views
8

hi im loại mới tại môi trường jsf, im cố gắng cập nhật một thủ tục phát triển và sau đó chuyển hướng đến một trang từ một hành động commandButton.Làm thế nào để sử dụng p của Primef ': growl và chuyển hướng đến một trang

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

Các quản lý mã đậu

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

này chỉ redirectme ​​đến trang nhưng doesnt cho tôi được thông báo gầm gừ, tôi đã kiểm tra rằng nếu thay đổi phương pháp của tôi để không trở về trang thông điệp làm chương trình của nó.

Tôi đã cố gắng cập nhật tiếng gầm gừ của trang đang chuyển hướng nhưng tôi không thể đoán được điều đó.

tôi nghĩ rằng khi chuyển hướng tôi đã mất chức năng cập nhật vì bây giờ tôi đang ở trang mới.

Có cách nào để báo cho jsf thực hiện cập nhật và sau đó chuyển hướng không?

Hy vọng bạn có thể giúp tôi, cảm ơn trước

Trả lời

42

Tin nhắn bị lạc trong chuyển hướng. Bạn có thể sử dụng đèn flash để giữ tin nhắn.

Thêm sau đây trước khi trở về từ phương pháp hành động của bạn:

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

Lưu ý rằng phương pháp này có một lỗi đặc biệt khi sử dụng với cá móm: nó sẽ không làm việc sau đó chuyển hướng đi vào một con đường khác. Nếu trang hiện tại và trang đích nằm trong cùng một đường dẫn (cùng một thư mục trong URL), thì nó sẽ hoạt động tốt. Xem thêm http://java.net/jira/browse/JAVASERVERFACES-1877 – BalusC

1

Thêm tiếng gầm khác để trang bạn chuyển hướng

như thế này <p:growl id="growlmsg2" showDetail="true" sticky="true" autoUpdate="true"/>

0

Vì Flash có lỗi, giải pháp của tôi là làm nút chuyển hướng được tách riêng sẽ được hiển thị sau khi hiển thị 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> 

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. 
} 
Các vấn đề liên quan