我已经使用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在这种情况下是最好的方法吗?
答案 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
}