2

あるマネージドBeanから別のマネージドBeanに値を取得しようとしています。ユーザー名を取得するloginbeanがあり、その値を取得して別のマネージドBeanサイドバービーンに入れる必要があります。私はJSFを使用していて、次のようなことができると思いまし #{sidebarbean.setUserName(loginbean.username)}たが、これは機能しません。助言がありますか?

あなたの提案に従って

@ManagedBean(name = "sidebarbean")
@SessionScoped
public class SideBarBean {
    private ArrayList myContacts = new ArrayList();
    private String user;
    @PersistenceContext
    private EntityManager em;
    @Resource
    private UserTransaction utx;

    public SideBarBean() {

    }

    public ArrayList getMyContacts() {
        myContacts.clear();
        List<Contacts> list = em.createNamedQuery("Contacts.findByUsername")
            .setParameter("username", user).getResultList();
        for (Contacts c : list) {
            myContacts.add(c.getContact());
        }
        return myContacts;
    }

    public void setMyContacts(ArrayList myContacts) {
        this.myContacts = myContacts;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }
}

@ManagedBean(name = "loginbean")
@SessionScoped
public class LoginBean {
    @PersistenceContext
    private EntityManager em;
    @Resource
    private UserTransaction utx;
    @ManagedProperty(value="#{sidebarbean}")
    private SideBarBean sbb;
    private String username;
    private String password;
    private Boolean verified = false;
    private Boolean authFail = false;

    public LoginBean() {
    }

    public void update(){
        sbb.setUser(username);
    }

「マネージドBeanloginbeanを作成できません。次の問題が見つかりました:-マネージドBeanloginbeanのプロパティsbbが存在しません。適切なgetterおよび/またはsetterメソッドが存在することを確認してください。」

4

1 に答える 1

2

@ManagedPropertyアノテーションを使用すると、の同じインスタンスにアクセスできますSideBarBean

@ManagedBean(name="loginbean")
public class LoginBean{

 @ManagedProperty(value="#{sidebarbean}")
 private SideBarBean sidebarbean;

 public void update(){

  sidebarbean.setUserName("xxxx");

 }

}
于 2012-11-25T22:21:51.610 に答える