2011-02-08 68 views
3

我已經使用Weblogic 10.3.4,PrimeFaces和JQuery編寫了一個小型的JSF2.0應用程序。我現在正在考慮將我們的主Web應用程序轉換爲JSF2.0。這是目前使用Weblogic 8.1,Java 1.4和JSP的。我現在的問題是將對象從一個託管bean傳遞到另一個託管bean的最佳方式。我們的應用程序由多個屏幕組成,但一般模式是在第一個屏幕上輸入引用,並在提交時從數據庫中查找並填充值對象(標準java bean)。然後返回屏幕2,該屏幕通常是一個由值對象的變量組成的表單,可供編輯。JSF2.0在託管bean之間傳遞值對象

當前所有必需的對象都被保存爲第一個屏幕(位於自定義寫入的控制器類中)中的HTTPServletRequest對象中的一個屬性,然後在隨後的屏幕中從該對象中檢索。

這仍然是這樣做的方式,或者是否有一種我錯過的新的「JSF」方式。我也考慮過將這些Value對象存儲在用戶會話Bean中(我們將有),然後在需要時從那裏檢索。我認爲在這種情況下,包含Value Objects的Map將是最好的方法嗎?

回答

3

您可以通過@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 

} 
+0

感謝您的快速回復。我設法讓上述工作得很好。我將需要構建第2頁的表單。我嘗試在構造函數中實例化已保存的VO,但得到了空指針。然後我使用@PostConstruct方法來實例化和設置我的表單變量。我認爲@PostConstruct在JSF2.0中是可接受的方法? – andyfinch 2011-02-08 15:24:12