2011-09-16 42 views
3

我工作的一個項目,我們有一個FooViewControllerBarListControllerBars的列表現在需要取決於正在查看的Foo。那麼有沒有人有建議如何做到這一點?JSF:依賴於另一個控制器的控制器?

我不從實現的角度來看需要一個答案,不一定,但是從設計的角度來看多。那就是:

  • 如若FooViewController以某種方式告訴正在看什麼FooBarListController
  • 如若BarListController問正在看什麼FooFooViewController
  • 在這兩種情況下,你如何注入這些東西到彼此? (這部分我需要實施幫助;-))

感謝您的幫助!

回答

5

基本上,在那裏你調用具體行動應該要求它作爲方法參數或作爲託管屬性豆。

所以,如果你使用一個Servlet 3.0/2.2 EL能夠容器中,然後通過Foo作爲方法參數:

<h:commandLink value="Bar list" 
    action="#{barListController.list(fooViewController.foo)}" /> 

public void list(Foo foo) { 
    this.list = barService.list(foo); 
} 

如果你不是EL 2.2然後將Foo設置爲託管資產:

<h:commandLink value="Bar list" 
    action="#{barListController.list}" /> 

@ManagedBean 
@ViewScoped 
public class BarListController { 

    @ManagedProperty("#{fooViewController.foo}") 
    private Foo foo; 

    public void list() { 
     this.list = barService.list(foo); 
    } 

    // ... 
} 
+0

我使用的Servlet 3.0,這是完美的。謝謝! –