У меня есть @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), и нет проблем с доступом к полям пользователя с JSF-страниц с помощью #{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
и развернут в ebb.jar в EAR. В качестве обходного пути я в настоящее время вводя UserBean
, получаю от пользователя.