在<f:event listener ="#{myBean.retrieveData(#{})">中传递一个参数

Uma*_*hta 3 java jsf jsf-2

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

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

小智 7

您可以通过属性传递它.

这是我在JSF上做的事情:

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

同时托管bean(myBean)如下:

public void retrieveData(ComponentSystemEvent event) {
    String id = (String) event.getComponent().getAttributes().get("myid");
}
Run Code Online (Sandbox Code Playgroud)

在f:event标签的监听器上调用托管bean的方法时,请确保不要使用'()'.