【发布时间】:2024-04-13 20:35:01
【问题描述】:
我正在处理一个记录数据表。我想让用户能够删除和编辑行内联(带有垃圾桶和编辑图标的列)。当用户想要删除时,我需要客户端自定义确认。如果他们点击是,我想提交到服务器并删除该行。
我没有这样的确认就可以工作,因为我在<datatable />的上下文中:
<xp:button styleClass="btn red"
value="Delete"
id="btnConfirmDelete">
<xp:eventHandler event="onclick"
submit="true"
refreshMode="partial"
refreshId="dataTable"
disableValidators="true">
<xp:this.parameters>
<xp:parameter name="rowIndex"
value="#{rowIndex}">
</xp:parameter>
</xp:this.parameters>
<xp:this.actionListeners>
<xp:actionListener type="com.domain.thing.listeners.deleteItemListener">
</xp:actionListener>
</xp:this.actionListeners>
</xp:eventHandler>
</xp:button>
此按钮位于重复面板中。 EL "#{rowIndex}" 正在应用每个行索引。
效果很好。
现在我需要介绍一条自定义确认消息。
所以我用<a /> 替换了这个按钮来启动删除对话框......并将已经工作的删除按钮移到对话框中。现在的问题是我丢失了"#{rowIndex}"。相反,我使用自定义属性将值设置到 DOM 中。
我遇到的问题是通过参数在侦听器 com.domain.thing.listeners.deleteItemListener 中检索此值。
我这样调整代码:
<xp:eventHandler event="onclick"
submit="true"
refreshMode="partial"
refreshId="demurrageDataTable"
onStart="XSP.setSubmitValue(window.dataTableRowDelete); alert('row is ' + XSP.getSubmitValue());"
onError="alert('onError: There was an error with the request.');"
disableValidators="true">
<xp:this.parameters>
<xp:parameter name="rowIndex"
value="#javascript:context.getSubmittedValue();}">
</xp:parameter>
</xp:this.parameters>
<xp:this.actionListeners>
<xp:actionListener type="com.canalbarge.trak.listeners.deleteDemurrageItemListener">
</xp:actionListener>
</xp:this.actionListeners>
</xp:eventHandler>
onStart 我得到了由对话框启动设置的 rowIndex。 当警报触发时,会显示正确的 rowIndex。
事件监听器中的服务器端出现异常,因为 p.getValue() 始终为空字符串“”。
XspEventHandler eventHandler = (XspEventHandler) event.getSource();
List<Parameter> params = eventHandler.getParameters();
System.out.println(btnName + "checking event params");
if(params != null){
for (Parameter p : params) {
System.out.println(btnName + p.getName() + "," + p.getValue());
if(p.getName().equals("rowIndex")){
rowIndex = Integer.parseInt(p.getValue());
}
}
}
else{
System.out.println(btnName + "params is null.");
}
【问题讨论】:
-
@Peter Mortensen,感谢您的编辑。
标签: jsf datatable xpages actionlistener