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

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

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

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

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

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

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

还有像这样的请求范围的bean

 @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 }