我对 jsf 很陌生,我用 ajax 卡在了更新表中。
我需要一张与选择菜单一起工作的表格,表格需要在更改时刷新。表格的列取决于菜单值,每个值的列数可以不同。
我的代码:
<h:form>
<h:selectOneMenu id="selectOneMenu" value="#{reservationGuestBean.currentPremiseId}" >
<f:selectItems value="#{reservationGuestBean.premiseNames}" var="p" itemLabel="#{p.label}" itemValue="#{p.value}" />
<a4j:ajax event="change" listener="#{reservationGuestBean.premiseChanged}" ajaxSingle="true" render=":currentPremiseId, :reservationsHeading, :reservationsBody" />
</h:selectOneMenu>
</h:form>
<div><h:outputText id="currentPremiseId" value="PremiseId: #{reservationGuestBean.currentPremiseId}" /></div>
<table id="reservationsTable">
<tr>
<ui:repeat id="reservationsHeading" var="col" value="#{reservationGuestBean.reservationTableHeading}">
<th>#{col}</th>
</ui:repeat>
</tr>
<ui:repeat id="reservationsBody" var="row" value="#{reservationGuestBean.reservationTableRows}">
<tr>
<ui:repeat id="reservationsRowContent" var="cell" value="#{row}">
<td>#{cell.value}</td>
</ui:repeat>
</tr>
</ui:repeat>
</table>
使用该代码,我可以重新加载 div 的内容,但不能重新加载表格、标题或内容。在萤火虫中,我可以看到具有所需响应的更新请求(带有 xml 的 xml),但未更新选定的表元素。