【问题标题】:richfaces datagrid with 2 backing bean lists具有 2 个支持 bean 列表的richfaces 数据网格
【发布时间】:2013-04-29 22:34:29
【问题描述】:

我想使用我的支持 bean 中的 2 个列表而不是一个列表来创建一个 rich:datagrid。

所以不是:

<rich:dataGrid columns="1" width="100%" value="#{MyBean.myList1}" var="listobj1" iterationStatusVar="it" elements="10">

我想要:

<rich:dataGrid columns="1" width="100%" value="#{MyBean.myList1}, #{MyBean.myList2}" var="listobj1, listobj2" iterationStatusVar="it" elements="10">

这可能吗?

【问题讨论】:

  • 您只想遍历 myList1 和 myList2 的所有值吗?在这种情况下,我会使用MyBean.myUnion 作为值并有一个getter,它只是说List l = new ArrayList(myList1); l.addAll(myList2); return l;。但是你对var 的使用让我很困惑——你希望它做什么?
  • 抱歉,应该说明原因。基本上我在支持 bean 上有 2 个列表,它们是 POJO 列表(List)。现在我想要的只是能够引用数据网格中的 POJO。所以基本上我希望能够在数据网格中添加
  • listObj1 和 listObj2 之间是否存在 1:1 映射关系?在这种情况下,您可能可以使用Map&lt;pojo1,pojo2&gt; 并对其进行迭代。尽管 JSF 有点麻烦,请参阅 stackoverflow.com/questions/8552804/…stackoverflow.com/a/10934074/785663
  • 嗯,地图是个好主意,但不幸的是,使用地图不起作用,因为我将它们作为列表获取,它们可能会变得很长,因此将它们转换为地图需要很长时间,我正在尝试避免。

标签: jsf-2 richfaces


【解决方案1】:

简短回答:不,这是不可能的,因为value 必须指向一个对象(不是复合字符串)。

基于您只有这两个列表并且似乎存在隐式映射这一事实,我将迭代一个并从循环中引用另一个:

<rich:dataGrid columns="1" value="#{MyBean.myList1}" rowKeyVar="k" var="elem" elements="10">
  <h:outputText value="#{elem.name}: #{MyBean.myList2[k].name}" />
</rich:dataGrid>

【讨论】:

  • 是否需要某个 Servlet、EL、JSF 版本?
  • 我不知道。虽然我一直在使用 EL-2.2 实现(Jboss EL)。
  • 我接受这个作为答案,只要它可能会工作,我的代码有一些其他问题,所以现在无法测试。
  • JBoss EL 是一个 EL 2.1 实现,它通过 EL 2.2 中可用的方法创新特性增强了 EL 2.1。它不是 EL 2.2 实现。
  • 到目前为止我没有发现任何实际差异,但感谢您澄清这一点。
猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 2010-10-28
  • 2012-10-20
相关资源
最近更新 更多