我的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>