2012-12-06 67 views
1

我试图使用JSF根据从视图到控制器的用户输入检索多个下拉列表。从JSF 2.0的视图中获取多个下拉列表值

但似乎我无法找到正确的方法。

由于下拉列表是动态生成的,我无法硬编码下拉列表的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在控制器列表中,使我能得到下拉列表中的所有用户输入,但似乎我失败了。

所以任何人都可以帮忙吗?

回答

2

我以为我可以宣布一个列表,控制器命名studentSelections这样我就可以得到下拉列表中的所有用户输入,但似乎我已经失败了。

这是正确的模型方法。在视图方面,您需要按索引引用列表值,如<ui:repeat varStatus>所示。假设#{student.id}Long,你已经一个

private List<Long> studentSelections; 

那么这应该在你的具体情况做

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

无关的具体问题,the <h:selectOneMenu> doesn't support the name attribute at all。摆脱它。 JSF自动生成一个。

+0

正是我的问题是什么!!! 非常感谢! – Hei

+0

不客气。 – BalusC