java - 如何在执行此 f :event listener 之前设置 bean 属性

标签 java jsf

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

相关文章:

java - 结果集中的基本编程 JTable 模型

Java Servlet header 隐式对象

java - 无法通过管理控制台保存 Weblogic JTA 设置

java - JSF/PrimeFaces : Fill out at least one of X fields

java - 在 JSP 之间传递参数

java - 如何在 JavaFX 场景图中拖动低于另一个 `Shape` 的 `shape`?

java - 使用spark检索elasticsearch数据时出现错误

jsf - 页面渲染过程中异常的错误页面

javascript - 添加 css 或 javascript 错误时的 Netbeans JSF

jsf - Primefaces 多个对话框与 closeOnEscape