java - 在 JSF bean 之间传递数据

标签 java spring jsf jsf-2 primefaces

我在 JSF bean 之间传递数据时遇到了这个问题。我想要做的是当我登录时,将用户名传递给下一个我可以使用它的 bean。我发现了很多关于这个的东西,但我无法让它在我的项目中工作。我所拥有的是一个 UserService,我可以在其中管理我的用户。这里有一个名为 getUsers(username) 的方法。现在我正在尝试传递用户名,以便检索我的用户对象。

xHtml:

        <h:link outcome="changeProfile" value="Change profile">
            <f:param name="username" value="#{userBean.username}" />
        </h:link>

更改配置文件 bean :
@Component("changeProfile")
@ManagedBean
@RequestScoped
public class ChangeProfileBean implements Serializable {

private UserService userService;
private User user;

@ManagedProperty("#{param.username}")
private String username;

@PostConstruct
public void init(){
    FacesContext facesContext = FacesContext.getCurrentInstance();
    this.username = facesContext.getExternalContext().getRequestParameterMap().get("username");

    try {
        if(username != null){
            user = userService.getUser(username);
        }
    } catch (UserServiceException e) {
        e.printStackTrace();
    }
}

@Autowired
public ChangeProfileBean(UserService userService) {
    this.userService = userService;
}

发生的情况是 changeUserbean 将在应用程序启动时创建。之后立即运行@PostConstruct,其中用户名显然等于null。但是当我调用 changeUserBean 时,它不再执行 @PostConstruct 了..
有人知道我能做什么吗?

用户 bean :
@Component("userBean")
@Scope("session")
public class UserBean implements Serializable
{
    @Autowired
    private UserService userService;

    @Autowired
    private RepairService repairService;

    private String username;
    private String password;

最佳答案

虽然您已经拥有更广泛范围内所需的数据,但只需将该支持 bean 注入(inject) changeProfileBean :

@ManagedBean
@RequestScoped
public class ChangeProfileBean implements Serializable {

    @ManagedProperty("#{userBean}")
    private UserBean userBean;

    public UserBean getUserBean(){
        return userBean;
    }
    public void setUserBean(UserBean userBean){
        this.userBean = userBean;
    }
    ...
}

关于java - 在 JSF bean 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908632/

相关文章:

css - 从 p :layout 中删除排水沟

jsf - selectOneMenu 中的 null bean

java - 主线程退出的多线程,其他线程是否有可能无限运行

java - 方法签名中的“ volatile ”?

java - Windows C++ 相当于 Java 的 LockSupport.parkNanos()

java - 在 Spring Boot 应用程序中为 Activiti 指定单独的数据源

java - 覆盖 Pageable findAll 以在 Spring Data Rest 中选择更少的列

java - 如何使用 spring 或 struts 实现在多个屏幕之间导航的订单工作流程

java - 现代 JVM 是否优化只读集合分配

java - 在 JSF 中使用 JQuery Mask 插件