我在会话范围中有一个 JSF 托管 bean,其中包含一个要跟踪的实体,例如,经过身份验证的用户:
@ManagedBean
@SessionScoped
public class LoginController implements Serializable {
User user;
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
/* ... */
}
在另一个 bean 中,我必须注入用户以使用它来检索与其关联的角色列表,如下所示:
@ManagedBean
@ViewScoped
public class AnotherController implements Serializable {
List<Role> roles;
@ManagedProperty(value="#{loginController.user}")
User user;
public someMethod() {
/* Some stuff that insert other roles into database, referring the user as owner */
roles = user.getRolesList();
}
}
如果我使用 ajax 更新页面someMethod
,roles
列表仍然不会重新加载。如果我在收到此错误em.refresh(user)
之前插入:user.getRolesList
Can not refresh not managed object: model.User[ id=1 ].
谁能帮我理解这一点?如果注入另一个 bean,为什么会话范围的实体不受管理?我怎样才能解决这个问题?谢谢你。