我正在开展一个项目,我们有一个FooViewController
和一个BarListController
。 Bars
列表现在需要依赖于正在查看的Foo
。那么有人建议如何做到这一点吗?
从实现的角度来看,我不一定需要答案,但更多的是从设计的角度来看。那就是:
FooViewController
是否应以某种方式告诉BarListController
正在查看Foo
的内容?BarListController
是否应该询问FooViewController
正在查看Foo
的内容?感谢您的帮助!
答案 0 :(得分:5)
基本上,您调用具体操作的bean应该将其作为方法参数或托管属性。
因此,如果您使用的是支持Servlet 3.0 / EL 2.2的容器,则将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);
}
// ...
}