Как собрать несколько связанных свойств в одно свойство бэк-компонента? - PullRequest
0 голосов
/ 27 ноября 2011

Есть ли способ заменить это в бобе

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>

Это выглядит не так уж плохо, но у меня есть 10 комнат в одном бобе.

Я думал о чем-то подобном в бэк-бине

//BB
private Room room1

И вид в основном тот же, но он создаст объект после передачи так что, как это работает, вместо того, чтобы иметь 6 дюймов для каждой комнаты в BB, у меня было бы только x классов внутри, а форма XHTML создала бы непосредственно POJO вместо индивидуального доступа к каждому int.

1 Ответ

2 голосов
/ 27 ноября 2011

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...