我需要动态地使用数据库填充一个数据表,其中我需要调用retieveData()方法并将id传递给方法中的条件。要传递的参数来自#{anotherBean.id}的另一个bean。我的问题是如何在方法中传递这个参数......? 以下是我想要做的......
<f:metadata>
<f:event listener="#{myBean.retrieveData(#{anotherBean.id)}" type="preRenderComponent" id="fevent"/>
</f:metadata>
答案 0 :(得分: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 tag的监听器上调用托管bean的方法时,请确保不要使用'()'。
答案 1 :(得分:3)
基本上
<f:metadata>
<f:event listener="#{myBean.retrieveData(anotherBean.id)}" type="preRenderComponent" id="fevent"/>
</f:metadata>
应该这样做。但是为什么不将anotherBean
注入myBean
并在Java代码中检索id?通常最好在Java代码中保留这种逻辑,而不是在这种情况下查看-xhtml文件。