我在MySQL数据库中有三个表。
这些表之间的关系是直观的 - 按照它们出现的顺序一对多。
我按照以下方式使用<p:dataGrid>
遍历SubCategory
,List<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<SubCategory>
时,我想将每个子类别的id
subCatId
(类型为Long
)设置为相关的托管bean,以便可以在<p:carousel>
中显示产品之前获取与每个子类别关联的产品列表吗?是否可以?
其他信息:
SubCategory
中List<SubCategory>
的每个对象都有一组产品,Set<Product>
已经被提取,它们也显示在<p:carousel>
中,如XHTML中的注释代码所示在按降序排序每个子类别的产品列表后,我只需要获取每个子类别的前五个产品。
只有在迭代List<SubCategory>
时查询每个子类别的产品列表时,这似乎才有可能。
如果还有其他方法,请提出建议。无论如何,我需要以表格格式显示子类别的子列表 - 子类别1 ->
在<p:dataGrid>
的第一行显示其前5个产品,子类别2 ->
显示它是<p:dataGrid>
第二行中的前5个产品,依此类推。
答案 0 :(得分:1)
当然,你可以做到。这就是您的<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
}
...
}