Tôi có một bean @SessionScoped @Named
với một phương pháp @Producer
cho một đối tượng người dùng:CDI phụ thuộc nhập nhằng
@Named @SessionScoped
public class UserBean implements Serializable
{
//...
@Named @Produces @LoggedIn @SessionScoped
public MyUser getCurrentUser() {return user;}
}
này hoạt động tốt trong thiết lập của tôi (JBoss-7.1.1-Final) và nó không có vấn đề để truy cập người dùng các trường từ các trang JSF với #{currentUser.name}
. Vòng loại là org.jboss.seam.security.annotations.LoggedIn
. Bây giờ tôi muốn @Inject
thành viên này trong một lĩnh vực trong một @Named
Bean:
@Named
public class FavBean implements Serializable
{
private @Inject @LoggedIn MyUser currentUser;
}
này mang lại cho tôi những lỗi:
org.jboss.weld.exceptions.DeploymentException:
WELD-001409 Ambiguous dependencies for type [MyUser] with qualifiers [@Default] at
injection point [[field] @Inject @LoggedIn test.FavBean.currentUser].
Possible dependencies [[Managed Bean [class test.ejb.MyUser] with qualifiers
[@Any @Default],
Producer Method [MyUser] with qualifiers [@Any @Default] declared as [[method]
@Named @Produces @LoggedIn @SessionScoped public test.UserBean.getCurrentUser()]]]
Tôi không hiểu sự phụ thuộc đầu tiên Managed Bean [class test.ejb.MyUser]
Lớp này là một đơn giản @Entity
và được triển khai trong một ebb.jar trong một EAR. Để giải quyết sự cố, tôi hiện đang tiêm UserBean
nhận người dùng từ đó.
Hoặc sửa đổi chú thích 'LoggedIn' bằng cách thêm 'Trình phân loại' vào nó. Có vẻ như nó không có 'Qualifier'. –