JSF:依赖另一个控制器的控制器?

Sea*_*son 3 model-view-controller jsf dependencies controller

我正在做一个我们有a FooViewController和a的项目BarListController.Bars现在的清单需要依赖于Foo被查看.那么有人建议如何做到这一点?

从实现的角度来看,我不一定需要答案,但更多的是从设计的角度来看.那是:

  • 应该FooViewController以某种方式告诉BarListController什么Foo正在看?
  • 应该BarListControllerFooViewController什么Foo正在观看?
  • 在任何一种情况下,你如何将这些东西注入彼此?(这部分我需要实施帮助;-))

谢谢你的帮助!

Bal*_*usC 5

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

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

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

public void list(Foo foo) {
    this.list = barService.list(foo);
}
Run Code Online (Sandbox Code Playgroud)

如果您还没有使用EL 2.2,那么设置Foo为托管属性:

<h:commandLink value="Bar list"
    action="#{barListController.list}" />
Run Code Online (Sandbox Code Playgroud)

@ManagedBean
@ViewScoped
public class BarListController {

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

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

    // ...
}
Run Code Online (Sandbox Code Playgroud)