JSF / JBoss Seam how-to:将一个List <item>拆分为多个ListBoxes(h:selectManyListbox)</item>

时间:2010-07-14 19:36:31

标签: jsf seam richfaces facelets

我正在使用这些课程:

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

所有这些都是JPA @Entity s,其中包含关联的相关getter和setter:

购物车:

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

档案:

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

项目类别:

public class ItemCategory {
  ...
}

问题:

让我说我有:
ItemCategory1中的Item1,Item2,Item3 ItemCategory2中的Item4,Item5,Item6

我正在尝试构建一个页面,您可以选择这样的shoppingcart.items:

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

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

如何使用JSF / Facelets / Seam执行此操作?

您对UI有更好的建议吗? (我不希望它是基于树的或单个列表框)

感谢。

1 个答案:

答案 0 :(得分:1)

在初始化对象初始化的方法(可能是@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>