JSF / JBoss Seam с практическими рекомендациями: разделение одного List <Item>на несколько ListBoxes (h: selectManyListbox) - PullRequest
0 голосов
/ 14 июля 2010

Я использую эти классы:

ShoppingCart   <-ManyToMany->   Item   <-ManyToOne->  ItemCategory

Все они - JPA @Entity s с соответствующими получателями и установщиками для отношений:

Корзина:

public class ShoppingCart {
  ...
  @ManyToMany
  public List<Item> getItems() {
    return items;
  }
  ...
}

Предмет:

public class Item {
  ...
  @ManyToOne
  public ItemCategory<Item> getCategory() {
    return category;
  }
  ...
}

Категория предмета:

public class ItemCategory {
  ...
}

Вопрос:

Допустим, у меня есть:
Item1, Item2, Item3 inItemCategory1
Item4, Item5, Item6 в ItemCategory2

Я пытаюсь создать страницу, на которой вы можете выбрать shoppingcart.items, например:

ItemCategory1: +-----------+
               | Item1     |
               | Item2     |
               | Item3     |  (multi-select with Ctrl)
               +-----------+

ItemCategory2: +-----------+
               | Item4     |
               | Item5     |
               | Item6     |  (multi-select with Ctrl)
               +-----------+

Как я могу это сделатьс JSF / Facelets / Seam?

Есть ли у вас лучшие предложения для пользовательского интерфейса?(Я не хочу, чтобы это было на основе дерева или одного списка)

Спасибо.

1 Ответ

1 голос
/ 15 июля 2010

В методе, в котором вы инициализируете инициализацию вашего объекта (возможно, @PostConstruct), разделите значения.Например, в

private Map<ItemCategory<Item>, List<Item>> itemsByCategory;

и затем выполнить итерацию с

<ui:repeat value="#{bean.itemsByCategory.entries}" var="entry">
     // show inputs, using entry.key and entry.value
</ui:repeat>
...