У меня есть следующий управляемый bean-компонент, который сохраняет данные для входа в систему после аутентификации контейнера:
@ManagedBean(name = "authenticatedUserController")
@SessionScoped
public class AuthenticatedUserController implements Serializable {
@EJB
private jpa.UtentiportaleFacade ejbFacade;
public Utentiportale getAuthenticatedUser() {
if (AuthenticatedUser == null) {
Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
if (principal != null) {
AuthenticatedUser = ejbFacade.findByLogin(principal.getName()).get(0);
}
}
return AuthenticatedUser;
}
getAuthenticatedUser вызывается на каждой странице, потому что я поместил имя пользователя в шаблоне facelets вверху справа.В PermessimerceController, другом управляемом объекте, мне нужно получить доступ к данным для входа, чтобы легко и быстро ввести вышеуказанный контроллер области действия:
@ManagedProperty(value = "#{authenticatedUserController}")
private AuthenticatedUserController authenticatedUserController;
У меня возникла следующая проблема: попытка получить доступ к странице, которая связана сPermessimerceController без проверки подлинности я перенаправлен на страницу входа (и это нормально), но после этого я получаю исключение нулевого указателя, поскольку authenticatedUserController имеет значение null, когда он вводится внутри PermessimerceController.На рассматриваемой странице используются как PermessimerceController, так и AuthenticatedUserController, поэтому я должен предположить, что по какой-то причине PermessimerceController создается до AuthenticatedUserController.Можете ли вы предложить простой способ решения этой проблемы?В качестве альтернативы, как я могу хранить данные для входа в легкодоступном месте?
Спасибо, Филиппо
Я пытаюсь отредактировать этот пост в надежде лучше прояснить проблему и найти полезные ответы.Используя шаблоны лицевой стороны, я показываю имя пользователя для входа через свойство AuthenticatedUserController.Остальная часть контента связана с PermessimerceController, который нуждается в некоторой информации о пользователе для фильтрации данных.Аннотация @ManagedBean - это простой способ сделать это.К сожалению, если пользователь получает доступ к этой странице без аутентификации, внедренный AuthenticatedUserController имеет значение null.Так что, кажется, PermessimerceController создан до AuthenticatedUserController, и мне интересно, почему.Есть ли уловка, которую я могу использовать, чтобы быть уверенным, что AuthenticatedUserController создается раньше?