【发布时间】:2011-09-02 10:49:54
【问题描述】:
我想要一个会话范围的 JSF bean,它具有一个请求(页面)范围的属性。有可能吗?
【问题讨论】:
标签: jsf session-scope
我想要一个会话范围的 JSF bean,它具有一个请求(页面)范围的属性。有可能吗?
【问题讨论】:
标签: jsf session-scope
不,这是不可能的。托管属性注入仅在创建 bean 期间发生。但是,当创建会话范围 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;
}
}
// ...
}
【讨论】:
Unable to set property userManager for managed bean credentials。我错过了什么?我为 userManager 放置了 getter 和 setter,但什么也没有......
按钮。不要忘记粘贴完整的堆栈跟踪,答案通常就是其根本原因。