【问题标题】:how to pass object from richface Datatable to actionlistener如何将对象从richface Datatable传递到actionlistener
【发布时间】:2011-12-14 20:05:06
【问题描述】:

我正在从 Richface 数据表中传递一个对象,例如:

<rich:column>
<a4j:commandLink
value="Transfer inside Group" 
actionListener="#{adminBean.init_machineTransferInsideGroup}"
reRender="transferInsideGroupMachinePanel"
oncomplete="#{rich:component('transferInsideGroupMachinePanel')}.show()">
    <f:setPropertyActionListener
            target="#{adminBean.machineToChange}"
        value="#{Machineassg3}" />
    </a4j:commandLink>
<rich:column>

当点击命令链接时,我对上述代码的期望:

  1. 将对象 (Machineassg3) 分配给 bean 的变量 (adminBean.machineToChange)
  2. 然后调用 actionlistener (init_machineTransferInsideGroup)
  3. 在 Richmodal 面板之后

但是正在发生的步骤是:

  1. 调用 actionlistener (init_machineTransferInsideGroup)
  2. 将对象 (Machineassg3) 分配给 bean 的变量 (adminBean.machineToChange)
  3. 在 Richmodal 面板之后

如何做预期的步骤(意味着先分配然后调用actionlistener)

【问题讨论】:

    标签: jsf jakarta-ee richfaces


    【解决方案1】:

    您应该在action 而不是actionListener 中开展业务工作。操作侦听器旨在保存自包含逻辑以准备/预处理实际业务操作和/或记录某些内容,而不是完成业务工作。

    所以,替换

    actionListener="#{adminBean.init_machineTransferInsideGroup}"
    

    通过

    action="#{adminBean.init_machineTransferInsideGroup}"
    

    并从init_machineTransferInsideGroup() 方法中删除ActionEvent 参数。该操作将在所有操作侦听器(也是 &lt;f:setPropertyActionListener&gt; 之一)完成其工作后调用。

    另见:

    【讨论】:

      【解决方案2】:

      您可以使用 ValueExpression 获取 rows 变量。

      假设你在 dataTable 声明中有 var="machine" 属性,那么在托管 bean 的操作方法中你可以这样

      FacesContext fCtx = FacesContext.getCurrentInstance();
      ELContext elCtx = fCtx.getELContext();
      ExpressionFactory ef = fCtx.getApplication().getExpressionFactory();
      ValueExpression ve = ef.createValueExpression(elCtx, "#{machine}", Machineassg3.class);
      machineassg3 = (Machineassg3)ve.getValue(elCtx);
      

      我不知道machineassg3 变量的实际类,所以我只知道Machineassg3

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 1970-01-01
        • 2010-11-05
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-01
        相关资源
        最近更新 更多