让 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> 中呈现

提交后如何取消选择 h:selectManyListbox

在 selectManyListbox 中显示来自数据库的结果

h:selectmanyListbox 使“选择”选项在至少选择一个选项时无法选择