我正在尝试从一个托管bean获取值到另一个托管bean。我有一个loginbean获取用户名,我需要获取该值并将其放入另一个托管bean sidebarbean。我正在使用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);
}
我得到“无法创建托管bean loginbean。发现了以下问题: - 托管bean loginbean的属性sbb不存在。检查是否存在适当的getter和/或setter方法。”
答案 0 :(得分:2)
您可以使用@ManagedProperty注释,然后就可以访问SideBarBean
的同一个实例。
@ManagedBean(name="loginbean")
public class LoginBean{
@ManagedProperty(value="#{sidebarbean}")
private SideBarBean sidebarbean;
public void update(){
sidebarbean.setUserName("xxxx");
}
}