如何在执行此f:event listener:
之前从jsf页面设置bean属性 <f:event type="preRenderComponent" listener="bean.method}"/>
我尝试了以下代码,但没有将值设置为bean属性。
<f:event type="preRenderComponent" listener="bean.method}">
<f:setPropertyActionListener target="#{bean.howMany}" value="2"/>
</f:event>
JSF2.1.6 with PF 3.3
以下代码的任何问题? (这有效!但我只是想确认这是否有任何问题!?)
<f:event type="preRenderComponent" listener="#{bean.setHowMany(15)}"/> <f:event type="preRenderComponent" listener="#{bean.method}"/>
答案 0 :(得分:3)
试
<f:event type="preRenderComponent" listener="#{bean.method('2')}"/>
如果那不起作用,请尝试
<f:event type="preRenderComponent" listener="#{bean.method}">
<f:attribute name="howMany" value="2" />
</f:event>
并在您管理的bean中添加以下内容
public void method(ComponentSystemEvent event) {
String howMany = (String) event.getComponent().getAttributes().get("howMany");
}
我认为你最好避免两个随后的<f:event>
调用,当你真的不需要它们时,虽然我认为我看到某个地方声明的顺序将是执行的顺序,它仍然可能在不同之间变化JSF实施,你永远不能100%确定你可以指望它......
所以INMO只使用一个在这种情况下更好
<f:event type="preRenderComponent" listener="#{bean.method(15)}"/>