让 JSF 将 selectManyListbox 值的选定项设置为 List 或 Collection 而不是数组
Posted
技术标签:
【中文标题】让 JSF 将 selectManyListbox 值的选定项设置为 List 或 Collection 而不是数组【英文标题】:Let JSF set selected items of selectManyListbox value as List or Collection instead of array 【发布时间】:2015-07-22 14:53:53 【问题描述】:有没有办法从 selectManyListbox 中获取选定的项目作为列表或集合?提交后选择的项目总是以数组的形式出现。
【问题讨论】:
【参考方案1】:将collectionType
属性设置为所需集合实现的 FQN。
例如如果您希望 JSF 在 java.util.ArrayList
的实例中设置所选项目:
<h:selectManyListbox ... collectionType="java.util.ArrayList">
【讨论】:
【参考方案2】:是的,一种替代方法是在您的支持 bean 中创建一个方法以将数组变量作为列表返回
public java.util. List<String> getItemAsList()
return java.util.Arrays.asList(this.item);
如果您需要输出项目,您可以使用 ui:repeat(可能您正在使用 Facelets)
<ui:repeat value="#yourBean.itemAsList" var="item">
#item
</ui:repeat>
【讨论】:
如果我需要将选定的值绑定到一个集合怎么办?提到的替代方案正是我要避免的。 另一种方法意味着这是您可以将数组的值作为列表检索的一些方法之一,并且所选值已经通过列表绑定。通过返回方法以上是关于让 JSF 将 selectManyListbox 值的选定项设置为 List 或 Collection 而不是数组的主要内容,如果未能解决你的问题,请参考以下文章
JSF 2.0 和 selectManyListbox 中的生命周期问题
带有转换器的 JSF selectManyListBox 不起作用
<f:selectItems> 未在 <h:selectManyListbox> 中呈现