如何在单个支持bean属性中收集多个相关属性?

时间:2011-11-27 10:43:39

标签: jsf collections jsf-2

有没有办法在支持bean中替换它

private int room1ad
private int room1ch
private int room1ch1
private int room1ch2
private int room1ch3
private int room1ch4
// getters & setters

并在视图中

<h:form>
  <h:selectOneMenu value="#{hotelsController.room1ad}">
      <f:selectItem itemLabel="1" itemValue="1"/>
      <f:selectItem itemLabel="2" itemValue="2"/>
      <f:selectItem itemLabel="3" itemValue="3"/>
  </h:selectOneMenu>
  <h:selectOneMenu value="#{hotelsController.room1ch}">
      <f:selectItem itemLabel="1" itemValue="1"/>
      <f:selectItem itemLabel="2" itemValue="2"/>
      <f:selectItem itemLabel="3" itemValue="3"/>
  </h:selectOneMenu>
  <h:selectOneMenu value="#{hotelsController.room1ch1}">
      <f:selectItem itemLabel="1" itemValue="1"/>
      <f:selectItem itemLabel="2" itemValue="2"/>
      <f:selectItem itemLabel="3" itemValue="3"/>
 </h:selectOneMenu>
 ......
 </h:form>

这看起来并不那么糟糕,但我在一个支持bean中有10个房间。

我在支持bean中想到了类似的东西

//BB
private Room room1

视图基本相同,但它会在submition之后创建对象 所以它的工作方式而不是BB中的每个房间都有6个整数我只有x个房间内部和XHTML形式将直接制作POJO而不是单独访问每个int

1 个答案:

答案 0 :(得分:2)

EL支持POJO上的列表和属性,因此您可以轻松使用它:

public List<Room> getRooms();

和xhtml:

<ui:repeat value="#{hotelsController.rooms}" var="room">
  <h:selectOneMenu value="#{room.ad}">
      <f:selectItem itemLabel="1" itemValue="1"/>
      <f:selectItem itemLabel="2" itemValue="2"/>
      <f:selectItem itemLabel="3" itemValue="3"/>
  </h:selectOneMenu>
  .
  .
</ui:repeat>