По сути, bean-компонент, для которого вы вызываете конкретное действие, должен запрашивать его как аргумент метода или как управляемое свойство.
Итак, если вы используете контейнер с сервлетом 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);
}
// ...
}