我的htmltable中有混合的列:1列是一个动作监听器,2列是动作,其他列是简单输出。

             var =“ anOrder” binding =“#{table.dataTable}”
             行=“#{table.rows}”
                                actionListener =“ closeOrder” />
                                propertyName =“ orderStatus” />
                                action =“ editOrder” />
                                action =“ viewOrder” />
....



我使用的是自定义标签,但是如果使用默认的列标签,则行为相同。我注意到一个非常奇怪的效果:单击actionlistener列时,action事件被处理3次。如果我删除2个动作列,则仅处理一次eventEvent。
托管bean具有sessionscope的bean方法:

    public void closeOrder(ActionEvent event){
        OrdersDto订单;
        如果((order = orderRow())== null){
            返回;
        }
        System.out.println(“ closeOrder()1”);
        orderManager.closeOrder();
        System.out.println(“ closeOrder()2”);
    }


控制台会打印“调试”文本3次。

最佳答案

在java方法中检查事件(名称?)。

我认为您正在向整个表添加侦听器和事件。相反,您应该通过将它们嵌套到列声明中来将它们添加到列中。

<h:column>
  <h:commandLink value="Edit" .../>
</h:column>

09-25 13:40