我有一个<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>
正如您所看到的,日历正在调用两种事件方法,即&#34; dateselect&#34;和&#34;改变&#34;
我添加了两种方法。用户可以通过电子和系统两种方式提供日期。
支持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中调用的方法。
任何建议对解决此问题都非常有帮助。
答案 0 :(得分:0)
我通过将“process”属性替换为“update”属性解决了这个问题,并添加了“execute = @ this”属性。
这是我更新的代码
<p:ajax event="dateSelect" execute="@this"
listener="#{systemDetailsBean.showPopup}"
update="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
partialSubmit="true" />
<p:ajax event="change" listener="#{systemDetailsBean.showPopup}" execute="@this"
update="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
partialSubmit="true" />