JSF2.0在托管bean之间传递Value对象

时间:2011-02-08 14:06:34

标签: java jsf jsf-2

我已经使用Weblogic 10.3.4,PrimeFaces和JQuery编写了一个小型JSF2.0应用程序。我现在正在考虑将我们的主Web应用程序转换为JSF2.0。目前使用的是Weblogic 8.1,Java 1.4和JSP。我现在的问题是将对象从一个托管bean传递到另一个托管bean的最佳方法是什么。我们的应用程序由许多屏幕组成,但是一般模式是在第一个屏幕上输入的引用,在提交时,这将从数据库中查找并填充值对象(标准java bean)。然后返回屏幕2,它通常是由值对象的变量组成的表格,可供编辑。

目前,所有必需对象都作为属性保存在第一个屏幕的HTTPServletRequest对象中(在自定义编写的控制器类中),然后在后续屏幕中从中检索。

这仍然是这样做的方式,还是我错过了一种新的“JSF”方式。我还考虑将这些值对象存储在用户会话bean(我们将会拥有它)中,然后在需要时从那里检索。我假设包含值对象的Map在这种情况下是最好的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以通过@ManagedProperty在另一个托管bean中注入托管bean。

假设你有像这样的会话范围的bean

@ManagedBean
@SessionScoped
public class User {
    // ...
}

请求作用域像这样的

@ManagedBean
@RequestScoped
public class Profile {

    @ManagedProperty(value="#{user}") // #{user} is the managed bean name
    private User user;

    @PostConstruct
    public void init() {
        // User is available here for the case you'd like to work with it
        // directly after bean's construction.
    }

    public String save() {
        // User is available here as well, during action methods.
        userDAO.save(user);
    }

    // +getter +setter

}