gpt4 book ai didi

java - 修改作为托管属性从另一个托管 Bean 访问的托管 Bean 的私有(private)对象属性

转载 作者:行者123 更新时间:2023-12-01 15:23:03 26 4
gpt4 key购买 nike

尝试向我们的 JSF 2 应用程序添加一项功能来列出 Activity 用户(具有 Activity session ),为此,我决定使用应用程序范围的托管 bean 并存储用户列表,并在某个时间添加每个用户。登录成功。然后,我将从 jsf 页面访问 Activity 用户列表(存储在应用程序范围的托管 bean 上)——前提是我能够弄清楚如何解决以下问题:

应用程序作用域 bean:AppBean.java

@ManagedBean(name = "appBean")
@ApplicationScoped
public class AppBean implements java.io.Serializable {

private List<User> connectedUsers = new ArrayList<User>();

public AppBean() {
}

public List<User> getConnectedUsers() {
return connectedUsers;
}

public void setConnectedUsers(List<User> connectedUsers) {
this.connectedUsers = connectedUsers;
}
}

登录 Bean:

@Named(value = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {

@ManagedProperty("#{appBean}")
private AppBean appBean;

private User userInSession;

public LoginBean() {
}

public String authenticate() {
if (this.authClearsOut()) {
if (appBean != null)
appBean.getConnectedUsers().add(userInSession);
else System.out.println("appBean = null !!!!");
return "/next_screen.xhtml?redirect=true";
}
else return "/login.xhtml?authentication=failed";
}

public AppBean getAppBean() {
return appBean;
}

public void setAppBean(AppBean appBean) {
this.appBean = appBean;
}
}

现在这里有两个问题:1) appBean 为 null,除非我将 LoginBean.java 的第 6 行更改为 private AppBean appBean = new AppBean();2) 用户 userinSession 永远不会添加到(列表)connectedUsers 中。

这里出了什么问题?

最佳答案

JSF @ManagedProperty 注释仅适用于 JSF @ManagedBean,不适用于 CDI @Named

LoginBean 更改为由 JSF @ManagedBean 管理,或将 AppBean bean 更改为由 CDI @ 管理命名,然后使用@Inject 而不是@ManagedProperty

关于java - 修改作为托管属性从另一个托管 Bean 访问的托管 Bean 的私有(private)对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com