我在使用selectManyCheckbox时遇到了困难。 基本上我正在做的是在selectManyCheckbox类型控制器中加载类别列表(使用List或带有convertEntity的List完成此操作)。我的问题在于所选元素(value =“#{cardListProvider.categoriesHolder.selectedCategories}”)。经过一些阅读后,我明白它也必须是一个列表,但是什么样的?如何设置所选类别?我不是将它们保存在DB中但是我需要在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>
我浪费了几个小时......有人能帮帮我吗? 谢谢
答案 0 :(得分:4)
您可以绑定到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
,因此不需要转换。Converter
,请假设该类型为String
数组。答案 1 :(得分:0)
我看到你正在使用Seam所以不需要使用Strings或任何原始类型,你可以直接绑定到List。您只需在selectManyCheckbox组件中添加另一个标签,它将自动完成所有操作。
比自己做的更好,查看Seam文档
http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/controls.html#d0e28378