1

チェックボックスをレンダリングしました。チェックボックスを選択すると、そのチェックボックスの値がパネルに表示されます。このためのコードを記述しましたが、機能しませんでした。

                              <h:selectManyCheckbox id="chkedition" value="#{newspaperBean.selectedEditions}" layout="lineDirection" styleClass="nostyle">
                                  <f:selectItems value="#{newspaperBean.searchEditionByNewspaper()}" var="item" itemLabel="#{item.editionName}" itemValue="#{item.editionName}"/>
                                  <f:ajax render="display" event="select"/>
                              </h:selectManyCheckbox>
                          </td>
                        </tr>
                            <tr>
                                <td colspan="2">
                                    <p:panel id="display" header="You have selected">
                                    <c:forEach items="#{newspaperBean.selectedEditions}" var="it">
                                        <h:outputText value="#{it}"/><br/>
                                    </c:forEach>
                                    </p:panel>
                                </td>
                            </tr>

これはフォームを送信するときに機能しましたが、チェックボックスを選択すると機能します。

4

1 に答える 1

1

属性を削除しevent="select"ます。これは、フックするのに不適切なイベントです。チェックボックスをクリックしたときではなく、入力フィールドとテキストエリアでテキストを選択したときにのみトリガーされます。

<f:ajax render="display" />

valueChangeチェックボックスで解決されるデフォルトのイベントはすでにありclick、これはまさに必要なものです。必要に応じて で明示的に指定することもできますevent="click"が、前述のように、既にデフォルト値になっているため、省略してください。

別の潜在的な問題は<c:forEach>、パネルにあります。ビューのビルド時に実行され、送信されたデータを含まない可能性のあるビュー スコープの Bean の独自のインスタンスを取得するため、Bean がビュー スコープの場合、これは失敗します。<ui:repeat>代わりに使用する必要があります。

<ui:repeat value="#{newspaperBean.selectedEditions}" var="it">
    <h:outputText value="#{it}"/><br/>
</ui:repeat>

以下も参照してください。

于 2012-06-06T15:39:49.193 に答える