3

我需要使用数据库动态填充一个数据表,在该数据表中我需要调用 retieveData() 方法并将 id 传递给方法内的结果标准。要传递的参数来自 #{anotherBean.id} 的另一个 bean。我的问题是如何在方法中传递这个参数......?以下是我想要做的......

<f:metadata>
     <f:event listener="#{myBean.retrieveData(#{anotherBean.id)}" type="preRenderComponent" id="fevent"/>
</f:metadata> 
4

2 回答 2

7

您可以通过属性传递它。

这是我在 JSF 上所做的:

<f:metadata>
    <f:event listener="#{myBean.retrieveData}" type="preRenderView" id="fevent"/>
    <f:attribute name="myid" value="#{anotherBean.id)" />
</f:metadata>

同时托管bean(myBean)如下:

public void retrieveData(ComponentSystemEvent event) {
    String id = (String) event.getComponent().getAttributes().get("myid");
}

确保在 f:event 标记的侦听器上调用托管 bean 的方法时不要使用 '()'。

于 2012-04-07T14:54:36.063 回答
3

基本上

<f:metadata>
     <f:event listener="#{myBean.retrieveData(anotherBean.id)}" type="preRenderComponent" id="fevent"/>
</f:metadata>

应该做。但是为什么不在 Java 代码中注入anotherBeanmyBean检索 id 呢?在这种情况下,最好将这种逻辑保留在您的 Java 代码中,而不是查看 - xhtml 文件。

于 2012-04-06T09:03:41.027 回答