2013-09-24 33 views
6

Tôi đang sử dụng Java EE 6 trên JBoss eap 6, và đậu JSF của tôi được chú thích như thế này: @ManagedBean @ViewScoped (cả từ gói javax.faces.bean)Viewscoped JSF và CDI đậu

Tuy nhiên, chúng cũng là các hạt CDI (hàm tạo mặc định, sử dụng @Inject @PreDestroy, v.v.). Tôi đang đọc tất cả các thời gian mà bạn không thể kết hợp các chú thích (JSF và CDI), nhưng nó dường như làm việc tốt: Tiêm đang làm việc, preDestroy được gọi là trên thay đổi xem vv). Tui bỏ lỡ điều gì vậy? Vấn đề là gì? Tại sao không sử dụng?

Trả lời

9

CDI @Inject hoạt động "ở mọi nơi" và do đó cũng nằm trong JSF @ManagedBean. Đối tác JSF @ManagedProperty chỉ hoạt động bên trong @ManagedBean. Bạn cũng không thể @Inject một bean được quản lý JSF thực trong bất kỳ bean được quản lý CDI nào (thay vào đó, nó sẽ là một cá thể được quản lý CDI). Có lẽ đây là những gì bạn đã đọc về. Sự đồng thuận chung, tuy nhiên, thực sự là tốt nhất là không trộn chúng để tránh nhầm lẫn giữa những người mới bắt đầu. JSF utility library OmniFaces có CDI tương thích @ViewScoped cho JSF 2.0/2.1.

@PreDestroy là theo cách không riêng cho CDI, không phải là đối tác của nó @PostConstruct. Chúng sẽ hoạt động tốt trong cả hai bean được quản lý CDI và các bean được quản lý JSF.

+0

Cảm ơn bạn đã trả lời. Có vẻ như tôi thực sự bối rối về tất cả những điều này ... Vì vậy, những gì tôi có là một bean được quản lý JSF, chứ không phải là một bean CDI? Ngay cả khi đậu này đáp ứng tất cả các yêu cầu thì một cuộc thảo luận về tài liệu đậu CDI về (constructor mặc định, không phải lớp bên trong, vv)? Nếu vậy, sự khác biệt với một hạt CDI là gì? những hạn chế hoặc những gì tôi không thể làm với đậu này mà tôi có thể làm với một hạt CDI? – htft

+0

Bạn không thể '@ Tiêm' trường hợp bean được quản lý JSF ở nơi khác. Nếu bạn không thực sự cần nó, thì đó không thực sự là một nhược điểm. Nhưng cần lưu ý rằng JSF đang dần chuyển sang CDI. Các chú thích cụ thể mới của JSF như '@ FlowScoped' chỉ là CDI. Cơ sở JSF '@ ManagedBean' sẽ không còn được dùng nữa trong tương lai gần. Người dùng được khuyến khích chuyển sang CDI trước khi nó xảy ra. – BalusC

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