我有一個@SessionScoped @Named
豆與用戶對象@Producer
方法:CDI曖昧的依賴關係
@Named @SessionScoped
public class UserBean implements Serializable
{
//...
@Named @Produces @LoggedIn @SessionScoped
public MyUser getCurrentUser() {return user;}
}
這在我的設置工作正常(JBoss的7.1.1決賽),它是訪問用戶沒問題來自JSF頁面的字段與#{currentUser.name}
。限定符爲org.jboss.seam.security.annotations.LoggedIn
。現在我想@Inject
該用戶在一個字段在另一個@Named
豆:
@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
從那裏獲取用戶。
或者通過向其添加Qualifier來修改'LoggedIn'註釋。看起來它沒有'Qualifier'。 – 2012-04-17 06:46:45