【发布时间】:2014-07-17 17:49:47
【问题描述】:
我有一个<p:dataTable> 并且连续我有一个日期字段,每当用户通过系统或手动更改日期时,我需要向用户显示对话,将调用 Ajax 方法来更新来自支持的消息豆子。
这是我正在使用的特定行的代码。
<p:calendar value="#{dets.exceptionDueDate}" pattern="MM/dd/yyyy"
size="10" navigator="true"
rendered="#{systemDetailsBean.editCmdActionflg==true and (dets.firstColumn!='1' or dets.secondColumn!='1')}">
<f:convertDateTime pattern="MM/dd/yyyy" />
<p:ajax event="dateSelect"
listener="#{systemDetailsBean.showPopup}"
process="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
partialSubmit="true" />
<p:ajax event="change" listener="#{systemDetailsBean.showPopup}"
process="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
partialSubmit="true" />
<f:attribute name="index" value="_#{index}" />
<f:attribute name="componentId" value="exe" />
</p:calendar>
如您所见,日历正在调用两个事件方法,即“dateselect”和“change”
我添加了两种方法,因为用户可能能够以手动和系统的方式提供日期。
backing bean中的Ajax方法如下
public void showPopup(ActionEvent event) {
String compId = (String) event.getComponent().getAttributes()
.get("componentId");
int index = Integer.parseInt(((String) event.getComponent()
.getAttributes().get("index")).replace("_", ""));
//Blah blah...
}
我的问题是考虑<p:dataTable> 有12 rows,当我更改特定行中的日期列时,为12 times 调用AjaxMethod。因此,我无法处理其中的一些消息支持 bean 中的 Ajax 方法。
当我在特定行中选择日期列时,如何才能限制仅调用一次 Ajax 方法。如您所见,我可以获取该行的索引。
但我不知道如何限制 XHTML 中的方法调用。
任何建议都会对解决这个问题很有帮助。
【问题讨论】:
标签: java ajax jsf-2 primefaces datatable