2011-02-19 23 views
5

Tôi đang làm việc với JSF 2.0Dữ liệu chuyển JSF 2.0 giữa các hạt đậu (hoặc trang?)

Tôi có một biểu mẫu trong phần quản trị của mình nơi tôi sẽ chọn một số người dùng trong danh sách.

Biểu mẫu (selectusers.xhtml) đang thêm những người dùng này vào danh sách trong một bean (SelectUsers.java).

Sau khi tôi đã chọn một số người dùng, tôi sẽ chuyển danh sách (các) người dùng từ SelectUsers.java sang một bean khác (AddAddressBean.java) và tiếp tục thêm thông tin vào biểu mẫu khác (addadress.xhtml) thiết lập các thuộc tính khác liên quan đến AddAddressBean cho mỗi người dùng.

Tôi không biết cách triển khai. Tôi muốn rằng AddAddressBean.java sẽ độc lập (vì vậy tôi có thể sử dụng nó cùng với các bean khác), vì vậy tôi thích AddAddressBean.java sẽ không biết về các bean khác.

Bạn có thể giúp tôi không? =)

BR Carl

Trả lời

5

Vài thứ nhanh đến tâm:

  1. Có lẽ bạn có thể có một bean đơn chỉ dành cho những trang liên quan, sử dụng @SessionScoped hoặc CDI của @ConversationScope
  2. Khi nhấp nút trên trang 1 nơi nó sẽ đưa bạn đến trang 2, trong bean thứ nhất, bạn có thể sử dụng đối tượng Flash để lưu trữ các đối tượng bạn muốn truyền, và trong phương thức @PostConstruct của bean thứ hai, bạn có thể nhận được tất cả các đối tượng từ đối tượng Flash
  3. Nếu bạn không nhớ sử dụng phạm vi phiên, bạn vẫn có thể có 2 bean và một bean có thể tham chiếu đến bean khác bằng cách sử dụng jsf way (@ManagedProperty) hoặc cách chèn Java EE (@Inject) hoặc cách mùa xuân nếu bạn sử dụng spring (@Autowired)
+0

Tôi làm theo các phương pháp 2. Ở trang thứ hai (bean thứ hai), tôi nhận được một đối tượng null từ Flash tại phương thức xây dựng bài viết. Bất kỳ ý tưởng tại sao? –

0

Cách tôi triển khai (sử dụng ConversationScoped như @bertie đã nói).

đậu 1:

@Named("conversationBean1") 
@ConversationScoped 
public class ConversationBean1 implements Serializable { 
      //---start conversation---- 

    } 

đậu 2:

@Named("conversationBean2") 
@ConversationScoped 
public class ConversationBean2 implements Serializable 
    { 
     @Inject 
     private ConversationBean1 conversationBean1; 
    } 
Các vấn đề liên quan