запросить свойство области в bean-объекте JSF - PullRequest
9 голосов
/ 26 мая 2011

Я хотел бы иметь бин JSF в области сеанса с одним свойством в области запроса (страницы).Возможно ли это вообще?

1 Ответ

8 голосов
/ 26 мая 2011

Нет, это невозможно.Внедрение управляемого свойства only происходит во время создания компонента.Однако, когда создается bean-объект сессионной области, необязательно присутствует запрос, и bean-объект с внедренной заявкой будет недействительным в последующих запросах в остатке сеанса.

Сделайте это наоборот.Например,

@ManagedBean
@SessionScoped
public class UserManager {

    private User current;

    // ...
}

и

@ManagedBean
@RequestScoped
public class Login {

    private String username;
    private String password;

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

    @EJB
    private UserService userService;

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

        if (user != null) {
            userManager.setCurrent(user);
            return "home?faces-redirect=true";
        } else {
            addErrorMessage("Unknown login, please try again");
            return null;
        }
    }

    // ...
}
...