在会话范围的JSF bean中请求范围属性

Jar*_*rek 9 jsf session-scope

我想有一个会话作用域的JSF bean与一个请求(页面)作用域的属性.有可能吗?

Bal*_*usC 8

不,那是不可能的.托管属性注入在创建bean期间发生.但是,当创建会话范围bean时,不一定存在请求,并且注入的请求范围bean在会话的剩余部分中的后续请求中将无效.

反之亦然.例如

@ManagedBean
@SessionScoped
public class UserManager {

    private User current;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

@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;
        }
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)