我有一个带有用户对象方法的@SessionScoped @Named
bean :@Producer
@Named @SessionScoped
public class UserBean implements Serializable
{
//...
@Named @Produces @LoggedIn @SessionScoped
public MyUser getCurrentUser() {return user;}
}
这在我的设置(JBoss-7.1.1-Final)中运行良好,并且使用#{currentUser.name}
. 限定词是org.jboss.seam.security.annotations.LoggedIn
。现在我想@Inject
这个用户在另一个@Named
Bean 的一个字段中:
@Named
public class FavBean implements Serializable
{
private @Inject @LoggedIn MyUser currentUser;
}
这给了我错误:
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()]]]
我不明白第一个依赖Managed Bean [class test.ejb.MyUser]
这个类是一个简单的@Entity
并且部署在一个EAR中的ebb.jar中。作为一种解决方法,我目前正在UserBean
从那里注入 get the user 。