Создание экземпляра управляемого компонента в рамках сеанса из другого объекта в рамках запроса - PullRequest
2 голосов
/ 25 октября 2011

Мне нужно создать экземпляр сессионного компонента из другого компонента с областью запроса и установить значения для этого компонента.Как я могу сделать это из другого компонента?

На самом деле мне нужно создать экземпляр компонента usersession после того, как пользователь успешно вошел в систему, и мне нужно установить управляемое свойство user этого компонента сеанса.

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Вам нужно вручную создать его обычным способом и поместить в ExternalContext#getSessionMap():

UserSession userSession = new UserSession();
userSession.setUser(user);
externalContext.getSessionMap().put("userSession", userSession);

Во имя правильного дизайна, я бы предпочел делегировать работу JSF.просто введя его как @ManagedProperty:

@ManagedBean
@RequestScoped
public class Login {

    @ManagedProperty("#{userSession}")
    private UserSession userSession;

    public String login() {
        // ...

        if (user != null) {
            userSession.setUser(user);
        }

        // ...
    }

}
2 голосов
/ 25 октября 2011

Установите свойство user вашего компонента usersession при входе в систему. Неважно, будет ли он создан до входа в систему, потому что его свойство user останется нулевым, пока не будет выполнен вход в систему.

И добавьте usersession bean-компонент в ваш запрос, справившись с bean-компонентом с аннотацией @javax.inject.Inject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...