Инициализировать компонент сеанса из компонента области запроса

#jsf-2

#jsf-2

Вопрос:

Всем привет
Я использую JSF 2.0, у меня есть два компонента UserBean (область запроса) и UserInfoBean (область сеанса). Я хочу знать, как можно инициализировать UserInfoBean из одного метода UserBean (область запроса), чтобы я мог получить к нему доступ из любого места.

Я также хочу знать, что с точки зрения производительности лучше 1. Поместите компонент в качестве компонента сеанса 2. поместите разные переменные в сеанс по отдельности.
Большое спасибо

Ответ №1:

Внедрите компонент в области сеанса как @ManagedProperty компонент в области запроса. Таким образом, он доступен для всех методов действия в компоненте области запроса.

Например.

 @ManagedBean
@SessionScoped
public class UserManager {

    private User user;

    // ...
}
  

и

 @ManagedBean
@RequestScoped
public class Login {

    private String username;
    private String password;

    @EJB
    private UserService userService;

    @ManagedProperty(value="#{userManager}")
    private UserManager userManager;

    public String submit() {
        User user = userService.find(username, password);

        if (user != null) {
            userManager.setUser(user);
            return "home";
        } else {
            addMessage("Unknown login, try again");
            return null;
        }
    }

    // ...
}