代码之家  ›  专栏  ›  技术社区  ›  Tiny user825402

在迭代p:dataGrid/p:dataTable时设置托管bean属性

  •  0
  • Tiny user825402  · 技术社区  · 12 年前

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

    • 类别(排除在这个问题之外)
    • 子目录(_C)
    • 产品

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


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

    <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>
    

    迭代时 列表<子类别> ,我想设置 id 对于每个子类别, subCatId (属于类型 Long )以便在显示产品之前获取与每个子类别相关联的产品列表 <p:carousel> 有可能吗?


    其他信息:

    的每个对象 子类别 在里面 列表<子类别> 有一套产品, Set<Product> 已提取,并显示在 <p: 转盘> XHTML中的注释代码也显示了这一点,但在按降序对每个子类别的产品列表进行排序后,我只需要获取每个子类别中的前五个产品。

    这似乎只有在迭代时为每个子类别查询产品列表时才可能实现 列表<子类别> .

    如果有其他方法,请提出建议。无论如何,我需要以表格格式显示产品的子类别列表-子类别1 -> 在第一排展示其排名前5的产品 <p: 数据网格> ,子类别2 -> 在第二排显示其排名前5的产品 <p: 数据网格> 等等

    1 回复  |  直到 12 年前
        1
  •  1
  •   Mr.J4mes    12 年前

    当然,你能做到。这就是你的 <p:carousel> 应该是:

    <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
        }
        ...
    }