【问题标题】:Set a managed bean property while iterating a p:dataGrid / p:dataTable在迭代 p:dataGrid / p:dataTable 时设置托管 bean 属性
【发布时间】:2014-03-29 11:31:32
【问题描述】:

我在 MySQL 数据库中有三个表。

  • 类别(本题除外)
  • 子类别
  • 产品

这些表之间的关系是直观的——按照它们出现的顺序一对多。


我正在使用<p:dataGrid> 遍历SubCategoryList<SubCategory> 的列表,如下所示。

<p:dataGrid var="row" value="#{subCategoryManagedBean}" rows="2" first="0" columns="1" rowIndexVar="rowIndex" paginator="true" paginatorAlwaysVisible="false" pageLinks="10" lazy="true" rowsPerPageTemplate="5,10,15">
    <h:panelGrid columns="1" style="width:100%;">

        <!--Here set #{row.subCatId} to the associated managed bean, does not seem possible-->

        <!--<p:carousel var="prodRow" value="#{row.productSet.toArray()}" numVisible="4" pageLinks="5" headerText="#{row.subCatName}" style="text-align: left;">
            <p:graphicImage library="fileUpload" name="product_image/medium/#{prodRow.productImageSet.toArray()[0].prodImage}"/>
        </p:carousel>-->

    </h:panelGrid>
    <p:ajax event="page" onstart="PF('blockDataPanelUIWidget').block()" oncomplete="PF('blockDataPanelUIWidget').unblock()"/>
</p:dataGrid>

在迭代 List&lt;SubCategory&gt; 时,我想将每个子类别的 id subCatIdLong 类型)设置为相关的托管 bean,以便与每个子类别关联的产品列表可以在&lt;p:carousel&gt;展示产品之前获取 可以吗?


其他信息:

List&lt;SubCategory&gt;SubCategory 的每个对象都有一组产品,Set&lt;Product&gt; 已经获取,它们也显示在 &lt;p:carousel&gt; 中,如 XHTML 中的注释代码所示,但我只需要获取前五个产品对每个子类别的产品列表按降序排序后的每个子类别。

这似乎只有在迭代List&lt;SubCategory&gt;时为每个子类别查询产品列表时才有可能。

如果有其他方法,请提出建议。无论如何,我需要以表格格式显示产品的子类别列表 - sub category1 -&gt;&lt;p:dataGrid&gt; 的第一行显示其前 5 个产品,sub category2 -&gt; 在第二行&lt;p:dataGrid&gt; 以此类推。

【问题讨论】:

    标签: jsf primefaces datagrid datatable jsf-2.2


    【解决方案1】:

    当然,你可以做到。这就是你的&lt;p:carousel&gt; 应该是这样的:

    <p:carousel var="prodRow" value="#{mrBean.getProducts(row.subCatId)}" numVisible="4"
                pageLinks="5" headerText="#{row.subCatName}" style="text-align: left;">
        <p:graphicImage library="fileUpload" name="product_image/medium/#{prodRow.productImageSet.toArray()[0].prodImage}"/>
    </p:carousel>
    

    这是@ManagedBean

    @ManagedBean
    @RequestScoped
    public class MrBean {
        ...
        public List<Product> getProducts(Long subCatId) {
            // Fetch your top 5 products here
        }
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2012-07-31
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2014-07-17
      • 2014-10-29
      • 1970-01-01
      相关资源
      最近更新 更多