如何在执行此f:event侦听器之前设置bean属性

时间:2012-06-17 04:21:00

标签: java jsf

如何在执行此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}"/>

1 个答案:

答案 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)}"/>