首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF selectManyCheckbox

JSF selectManyCheckbox
EN

Stack Overflow用户
提问于 2009-10-28 19:42:42
回答 2查看 5.2K关注 0票数 2

我在用selectManyCheckbox时遇到了困难。基本上,我所做的是在一个selectManyCheckbox类型控制器中加载一个类别列表(我已经使用List或convertEntity使用List完成了这项工作)。我的问题是所选元素的(value="#{cardListProvider.categoriesHolder.selectedCategories}").经过一些阅读,我知道它也必须是一个列表,但是哪种类型呢?如何设置所选类别?我不会将它们保存在数据库中,但我需要使用它们在bean中运行一些操作!

这就是我所拥有的:

代码语言:javascript
复制
    <h:selectManyCheckbox id="supportCategoryCardFilter"
value="#{cardListProvider.categoriesHolder.selectedCategories}" styleClass="greyText" required="false" >

             <s:selectItems var="filterList" value="#{cardListProvider.categoriesList}" label="#{filterList.label}" />

             <a:support id="supportCategoryCardFilter2" event="onchange"
reRender="someHolder, categoriesPanel" eventsQueue="onchange" action="#{cardListProvider.findCards(cardListProvider.categoriesHolder.selectedCategories)}" />

    </h:selectManyCheckbox>

我在这上面浪费了几个小时...有谁可以帮我?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-28 20:45:21

您可以像这样绑定到String[]数组:

代码语言:javascript
复制
public class CheckSelector {
  private String[] chosen;

  public String[] getChosen() { return chosen; }
  public void setChosen(String[] chosen) { this.chosen = chosen; }

  public SelectItem[] getChoices() {
    return new SelectItem[] { new SelectItem("1"), new SelectItem("2"),
        new SelectItem("3") };
  }
}

selectManyCheckbox的值应该绑定到chosen。或者,您也可以使用List

代码语言:javascript
复制
public class CheckSelector {
  private List<String> chosen;

  public List<String> getChosen() { return chosen; }

  public void setChosen(List<String> chosen) { this.chosen = chosen; }

  public List<SelectItem> getChoices() {
    return Arrays.asList(new SelectItem("1"), new SelectItem("2"),
        new SelectItem("3"));
  }
}

javadoc中列出了对值支持的确切规则

  • 如果组件有附加的Converter,则使用它。
  • 如果没有,则查找值的ValueExpression (如果有)。ValueExpression必须指向以下内容:
    • 一个基元数组(比如int[])。查找这个原语类型的注册类Converter
    • 一个对象数组(比如Integer[]String[])。查找底层元素类型的按类注册的Converter
    • A java.util.List。假设元素类型为java.lang.String,因此没有转换为required.

  • 如果由于任何原因找不到Converter,则假定类型为String数组。
票数 4
EN

Stack Overflow用户

发布于 2009-12-08 12:17:47

我看到你在使用Seam,所以不需要使用String或任何原始类型,你可以直接绑定到List。您只需在selectManyCheckbox组件中添加另一个标记,它将自动执行所有操作。

检查Seam文档要比自己做要好得多

http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/controls.html#d0e28378

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1636736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档