我在用selectManyCheckbox时遇到了困难。基本上,我所做的是在一个selectManyCheckbox类型控制器中加载一个类别列表(我已经使用List或convertEntity使用List完成了这项工作)。我的问题是所选元素的(value="#{cardListProvider.categoriesHolder.selectedCategories}").经过一些阅读,我知道它也必须是一个列表,但是哪种类型呢?如何设置所选类别?我不会将它们保存在数据库中,但我需要使用它们在bean中运行一些操作!
这就是我所拥有的:
<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>我在这上面浪费了几个小时...有谁可以帮我?谢谢
发布于 2009-10-28 20:45:21
您可以像这样绑定到String[]数组:
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
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。java.util.List。假设元素类型为java.lang.String,因此没有转换为required.
Converter,则假定类型为String数组。发布于 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
https://stackoverflow.com/questions/1636736
复制相似问题