2012-02-05 25 views
11

Tôi hiểu nhầm việc sử dụng phạm vi flash trong jsf 2. Tôi muốn đặt đối tượng trong bản đồ flash trong khi thực hiện hành động và hiển thị đối tượng này trong trang tiếp theo. Đây là hành động của tôi (gọi bằng h: commandLink):Đối tượng trong phạm vi Flash không khả dụng sau khi chuyển hướng

public String showDetail(PersonneDTO personne) { 
    MessageFlashBean message = new MessageFlashBean(); 
    message.addMessage("test"); 
    FacesContext.getCurrentInstance().getExternalContext().getFlash() 
     .put("test", message); 
    return "showDetail"; 
} 

Nó chỉ là một bài kiểm tra, nhưng đối tượng thực sự tôi muốn sử dụng là phức tạp hơn.

Đây là trang thứ hai với việc sử dụng đèn flash:

<ui:fragment rendered="#{flash.test != null and flash.test.hasMessage()}" > 
    <ui:repeat var="message" value="#{flash.test.messages}"> 
     #{message} 
    </ui:repeat> 
</ui:fragment> 

Đây là điều hướng (và đây là vấn đề của tôi :)):

<navigation-rule> 
    <from-view-id>/index.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>showDetail</from-outcome> 
     <to-view-id>/private/showDetail.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

Trong trường hợp này, đèn flash phạm vi công trình tốt và thông điệp của tôi xuất hiện.

Nhưng nếu tôi thêm chuyển hướng trong trường hợp điều hướng, đối tượng của tôi trong bản đồ flash đã biến mất.

Tôi không hiểu tại sao tôi không thể sử dụng chuyển hướng trong quy tắc điều hướng (Tôi tin rằng đó là mục tiêu của phạm vi flash).

Có thể có sự cố trong mã của tôi.

Ai đó có thể giúp tôi?

Cảm ơn

+0

Tôi đã thử trên JSF 2.0.3.FCS, nó đã tồn tại một chuyển hướng. – Ravi

Trả lời

14

Việc triển khai phạm vi Flash JSF2 had a lot of problems của Mojarra. Hầu hết trong số họ đã được giải quyết với mọi bản phát hành Mojarra mới. Hiện tại, với số Mojarra version mới nhất, phiên bản 2.1.6, theo như tôi biết vẫn chỉ có một vấn đề mở lớn: nó sẽ không hoạt động nếu bạn chuyển hướng đến một đường dẫn cơ sở khác. Xem thêm nhận xét cuối cùng (hiện tại) trong cuộc thảo luận dài trong issue 1751.

Ngay bây giờ, bạn có về cơ bản các tùy chọn sau:

  1. Quên sử dụng Flash khi bạn cần phải chuyển hướng đến một con đường cơ sở khác nhau. Thay vào đó, hãy sử dụng thông số yêu cầu hoặc cố gắng mô phỏng phạm vi flash bằng cookie tùy chỉnh.

  2. Nếu có thể, hãy tổ chức lại cấu trúc thư mục để bạn không cần chuyển hướng đến đường dẫn cơ sở khác khi bạn cần phạm vi flash để tồn tại.

  3. Hãy thử MyFaces thay vì Mojarra. Có lẽ nó làm nó tốt hơn đối với phạm vi flash.


Cập nhật: theo issue 2136, vấn đề mở cuối cùng của phạm vi flash không phải là có sẵn sau khi chuyển hướng trên một con đường khác nhau được giải quyết trong một thời gian ngắn sắp tới cá móm 2.1.14. Vì vậy, với phiên bản này, tất cả Các vấn đề liên quan đến phạm vi flash được phát hiện và mở cho đến nay cần được giải quyết và đóng.

+0

Cảm ơn rất nhiều, tôi sử dụng Mojarra 2.1.6 và tôi đã không thấy lỗi này. Đó là chính xác trường hợp của tôi. Tôi sẽ cố gắng quay lại phiên bản 2.0.3 – Kiva

2

jsf 2.1 với netbeans gặp sự cố này với flash. sử dụng /somepage?redirect-faces=true or /somedirectory/somepage?faces-redirect=true không hoạt động. nó phải là somepage?redirect-faces=true.

mojarra thử nghiệm 2.1.7, nhưng nó không có vấn đề trên.

+2

Tôi nghĩ IDE ở đây không quan trọng ... –

Các vấn đề liên quan