Model view controller JSF:依赖于另一个控制器的控制器?

Model view controller JSF:依赖于另一个控制器的控制器?,model-view-controller,jsf,controller,dependencies,Model View Controller,Jsf,Controller,Dependencies,我正在做一个项目,我们有一个FooViewController,还有一个BarListController。条的列表现在需要取决于正在查看的Foo。那么,有人对如何做到这一点有建议吗 我不需要从实现的角度给出答案,但更需要从设计的角度给出答案。即: FooViewController是否应该告诉BarListController正在查看的Foo BarListController是否应该询问FooViewController正在查看什么Foo 在这两种情况下,如何将这些东西相互注入?(此部分我

我正在做一个项目,我们有一个
FooViewController
,还有一个
BarListController
条的列表
现在需要取决于正在查看的
Foo
。那么,有人对如何做到这一点有建议吗

我不需要从实现的角度给出答案,但更需要从设计的角度给出答案。即:

  • FooViewController
    是否应该告诉
    BarListController
    正在查看的
    Foo
  • BarListController
    是否应该询问
    FooViewController
    正在查看什么
    Foo
  • 在这两种情况下,如何将这些东西相互注入?(此部分我需要实施帮助;-))

谢谢你的帮助

基本上,调用具体操作的bean应该请求将其作为方法参数或托管属性

因此,如果您使用的是支持Servlet 3.0/EL 2.2的容器,则将
Foo
作为方法参数传递:

<h:commandLink value="Bar list"
    action="#{barListController.list(fooViewController.foo)}" />
如果您尚未使用EL 2.2,则将
Foo
设置为托管属性:

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

我正在使用Servlet3.0,这非常完美。谢谢
<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);
    }

    // ...
}