1

ビューからコントローラーへのユーザー入力に従って、JSFを使用して複数のドロップダウンリストを取得しようとしています。

しかし、私は正しい方法を見つけることができないようです。

ドロップダウンリストは動的に生成されるため、ドロップダウンリストのID/名前をハードコーディングすることはできません。

ビュー内の私のコードは次のとおりです。

                    <ui:repeat var="file" value="#{uploadBean.filesInZip}" varStatus="status">
                        <tr>
                            <td><h:outputText value="#{file.name}" /></td>
                            <td>
                                <h:selectOneMenu id="studentSelections" value="#{uploadBean.studentSelections}" name="studentSelections">
                                    <f:selectItems value="#{uploadBean.students}" var="student" 
                                        itemLabel="#{student.firstName}, #{student.lastName} (#{student.userId})" 
                                        itemValue="#{student.id}"/>
                                </h:selectOneMenu>
                            </td>
                        </tr>
                    </ui:repeat>

ドロップダウンリストのすべてのユーザー入力を取得できるように、コントローラーでstudentSelectionsという名前のリストを宣言できると思いましたが、失敗したようです。

それで、誰かがそれに手を差し伸べることができますか?

4

1 に答える 1

2

ドロップダウンリストのすべてのユーザー入力を取得できるように、コントローラーでstudentSelectionsという名前のリストを宣言できると思いましたが、失敗したようです。

それが正しいモデルアプローチです。ビュー側では、で使用可能なインデックスでリスト値を参照する必要があります<ui:repeat varStatus>。それ#{student.id}Longあり、あなたが

private List<Long> studentSelections;

その後、これはあなたの特定の場合に行う必要があります

<h:selectOneMenu ... value="#{uploadBean.studentSelections[status.index]}">

具体的な問題とは関係なく、は属性をまったく<h:selectOneMenu>サポートしていませんname。それを取り除きます。JSFは1つを自動生成します。

于 2012-12-06T13:04:53.353 に答える