セッションスコープに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に注入された場合、セッションスコープのエンティティが管理されないのはなぜですか?どうすればこれを修正できますか?ありがとうございました。