I would like to have a session scoped JSF bean with one property that is request (page) scoped. Is it possible at all?
No, that's not possible. Managed property injection only happens during creation of the bean. However, when a session scoped bean is been created there is not necessarily a request present and the injected request scoped bean would be invalid in subsequent requests in the remnant of the session.
Do it the other way round. E.g.
@ManagedBean
@SessionScoped
public class UserManager {
private User current;
// ...
}
and
@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;
}
}
// ...
}
来源:https://stackoverflow.com/questions/6136507/request-scoped-property-in-session-scoped-jsf-bean