2011-11-27 34 views
0

有没有在视图如何在单个后台bean属性中收集多个相关属性?

<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

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

和它来取代这种方式,但我有10间客房在一个支持bean。

我支持bean

//BB 
private Room room1 

和视图基本相同想过这样的事情,但是经过submition 所以它的工作方式具有以BB每个房间6个整数,而不是它会创建对象我只有x室内类和XHTML形式将直接POJO而不是单独访问每个int

回答

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> 
+0

是的,但我需要前右定义房间号码是多少?但我有一个selectOne来定义房间数量。但我会去尝试你的溶剂。 – Mazmart

+0

@Mazmart很难从xhtml中猜出您的业务需求是什么,所以也许我的代码片段并不完美。我的意图是更多地展示可能的选择。 – mrembisz

+0

不,它完美的作品:)谢谢。最后一件事是我想写'''' – Mazmart