如何用h:selectManyCheckbox绑定对象

时间:2011-03-28 08:48:10

标签: java jsf

我有一个对象,比如用户,它有10个属性,我想把它绑定到h:selectManyCheckbox并想要显示它的两个特定字段作为itemLabel& f的itemValue:selectItems。我怎样才能做到这一点?请帮忙!

1 个答案:

答案 0 :(得分:3)

在facelet中使用以下内容:

<h:selectManyCheckbox id="yourElementID"
                      value="#{myBean.selectedList}">
  <f:converter converterId="userConverter"/>
  <f:selectItems value="#{myBean.availableItemsList}"
                 var="item"
                 itemLabel="#{item.labelAttribute}"
                 itemValue="#{item.valueAttribute}"/>
</h:selectManyCheckbox>

替换:

  • myBean使用您的bean名称

  • selectedList包含的列表 选定的值

  • availableItemsList以及清单 您的商品

  • labelAttribute,其属性为
    您打算用作项目的名称
    标签

  • 带有属性的
  • valueAttribute 您打算用作项目的名称 值

请注意,f:converter元素中引用了转换器。 h:selectManyCheckbox将字符串作为值返回。因此,您需要一个用于将对象转换为字符串的User类转换器,反之亦然。您可以将其实现为托管bean的内部类或单独的类。

@FacesConverter(value="userConverter")
public static class UserConverter implements Converter {
  public Object getAsObject(FacesContext facesContext, 
                    UIComponent component, String value) {
    // your code to convert String to Object
  }

  public String getAsString(FacesContext facesContext, 
                    UIComponent component, Object object) {
    // your code to convert Object to String
  }