我有一个使用ajax请求在JSF页面中生成的表。当我从该表中删除一个条目时,我希望ajax调用刷新以显示该条目已被删除。下面是我的代码。在"deleteAccount"命令按钮被点击的那一刻,该条目从数据库中删除,但这并没有得到反映在屏幕上,直到我再次点击"搜索承包商"按钮。任何帮助都是感激的。由于
<h:form id="searchForm">
<div class="white"><H2>View All Contractors</H2></div>
<table>
<tr>
<td>
<div class="myButtonPadding">
<h:commandButton id="searchContractors" class="myButton"
action="#{adminBean.searchAllContractors()}" value="View All">
<f:ajax execute="@form" render=":results" />
</h:commandButton>
</div>
</td>
</tr>
</table>
</h:form>
<table>
<tr>
<td>
<div class="red">
<H2>Search Results</H2>
</div>
<ui:repeat var="a" value="#{adminBean.contractorList}" varStatus="status">
<tr>
<td>
<div class="generaltext5">#{a.businessName}</div>
</td>
<td>
<h:commandButton id="deleteAccount" class="myButton2" value="Delete" action="#{adminBean.deleteAccount(a.id)}">
<f:param name="compId" value="#{a.id}" />
</h:commandButton></td>
</tr>
</ui:repeat>
</td>
</tr>
</table>
使用<f:ajax>
标签与您的按钮。
<h:commandButton id="deleteAccount" class="myButton2" value="Delete" type="button" >
<f:ajax event="click" listener="#{adminBean.deleteAccount(a.id)}" render=":searchForm"/>
</h:commandButton>
这将启动一个ajax调用并更新id为searchForm
的整个表单,但是如果您愿意,您可以只更新表。为了将来的证明,如果您想从下表提交任何内容,请确保将其包含在h:form
标签中。顺便说一句。为什么要传递带有
<f:param name="compId" value="#{a.id}" />
如果你已经用方法调用了?(adminBean.deleteAccount(a.id)
)