私は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 のコンテンツをリロードできますが、テーブルではなく、見出しもコンテンツもリロードできません。firebug では、必要な応答 (xml を含む) を含む更新要求を確認できますが、選択したテーブル要素は更新されません。