3
我有一个使用Ajax的合成组件,<p:selectOneButton/>
,当Ajax调用actionListener
时<p:commandButton/>
它调用10次然后运行该方法。我认为这个问题的原因是<p:dataGrid/>
,因为当我把我的<p:commandButtton/>
从<p:dataGrid/>
中取出时,它正常工作,但是当我在<p:dataGrid/>
中使用它时,Ajax调用actionListener
不止一次。Ajax调用方法多于一次在jsf
这里是.xhtml:
<table style="width: 100%">
<tr>
<td><p:selectOneButton value="#{inviteRequestManagedBean.filterType}">
<f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />
<f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />
<f:ajax event="change" render="requestDataGrid" />
</p:selectOneButton></td>
</tr>
<tr>
<td><p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1"
rows="2">
<p:column>
<div>
<table border="0" width="100%">
<tr>
<td><p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}" /></td>
<td>
<div>
<table border="0" width="100%">
<tr>
<td><h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}" /></td>
</tr>
<tr>
<td><h:outputLabel value="#{tBusinessPartnerReques`enter code here`tInfo.partySender_fullName}" /></td>
</tr>
</table>
</div>
</td>
<td><p:commandButton id="acceptCommonButton" value="#{inviteRequest_msg.accept}" process="@this"
actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}">
</p:commandButton></td>
<td><p:commandButton id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"
actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}">
</p:commandButton></td>
</tr>
</table>
</div>
<hr />
</p:column>
</p:dataGrid> <p:panel>
</p:panel></td>
</tr>
</table>
我怎样才能解决这个问题?
谢谢。