gpt4 book ai didi

jsf - 用户界面 :repeat inside ui:repeat

转载 作者:行者123 更新时间:2023-12-04 18:21:29 29 4
gpt4 key购买 nike

我有这个:

<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是:
public List<RequestItemVO> listRequestItem;

在这里我填充它:
listRequestItem = new ArrayList<>(requestVO1.getRequestItem());
item.product.materials是:
public Set<MaterialVO> getMaterials()
{
//compiled code
throw new RuntimeException("Compiled Code");
}

当我尝试访问 m在我的内心 <ui:repeat> ,我无法访问它的方法。
#{item.product.codigoProduto}正在正确返回产品代码。

最佳答案

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

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

  • 将属性更改为 List<MaterialVO>而是相应地更改业务代码。
    private List<MaterialVO> materials;
  • 或者添加一个包装器属性并使用它。
    public List<MaterialVO> getMaterialList() {
    return new ArrayList<MaterialVO>(materials);
    }

    这只是昂贵的,因为每次迭代都会调用 getter。您可能想要添加另一个包装原始集的属性。
  • 或者创建一个自定义 EL 函数来完成这项工作:
    <ui:repeat value="#{util:setToList(item.product.materials)}" ...>
  • 或者创建一个自定义的 EL 解析器。可以在这个答案中找到详细信息:How do I use a java.util.Set with UIData in JSF. Specifically h:datatable?

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

    关于jsf - 用户界面 :repeat inside ui:repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585973/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com