如何在执行此 f:event 监听器之前从 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>
带有 PF 3.3 的 JSF2.1.6
编辑
下面的代码有什么问题吗? (这行得通!但我只是想确认一下这是否有任何问题!?)
<f:event type="preRenderComponent" listener="#{bean.setHowMany(15)}"/> <f:event type="preRenderComponent" listener="#{bean.method}"/>
最佳答案
尝试
<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)}"/>
关于java - 如何在执行此 f :event listener 之前设置 bean 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068893/