首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ui:在ui内部重复:重复

ui:在ui内部重复:重复
EN

Stack Overflow用户
提问于 2012-05-14 23:05:52
回答 1查看 3.8K关注 0票数 2

我有这个:

代码语言:javascript
复制
<ui:repeat value="#{orderController.listRequestItem}" var="item">
....
<tbody>
  <tr>
    <td>#{item.product.codigoProduto}</td>
  <td>
    <ui:repeat value="#{item.product.materials}" var="m">
     #{m.description}
    </ui:repeat>
  </td>
...

listRequestItem为:

代码语言:javascript
复制
public List<RequestItemVO> listRequestItem;

我在这里填充它:

代码语言:javascript
复制
listRequestItem = new ArrayList<>(requestVO1.getRequestItem());

item.product.materials为:

代码语言:javascript
复制
public Set<MaterialVO> getMaterials()
{
    //compiled code
    throw new RuntimeException("Compiled Code");
}

当我试图访问内部<ui:repeat>上的m时,我无法访问它的方法。

#{item.product.codigoProduto}正确返回产品代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-14 23:25:01

<ui:repeat>不支持Set<E>。这一支持将在即将发布的JSF2.2(也适用于<h:dataTable>)中得到introduced。JSF 2.2将在本季度发布。

同时,您需要将其转换为List。有几种方法:

  • 将属性改为List<MaterialVO>,并相应地更改业务代码。

个人分发列表材料;

  • 或添加包装属性并使用它。

公用分发名单getMaterialList() {返回新材料(ArrayList);}

这只是因为在每次迭代中都会调用getter,所以开销很大。您可能想要添加另一个包装原始set的属性。

  • 或创建一个自定义EL函数来完成此工作:

此问题与嵌套<ui:repeat>无关。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10585973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档