Jsf 对所有列使用ui:在datatable内部重复
我对h:datatable和ui:repeat有问题 我有下一个对象结构:Jsf 对所有列使用ui:在datatable内部重复,jsf,datatable,uirepeat,Jsf,Datatable,Uirepeat,我对h:datatable和ui:repeat有问题 我有下一个对象结构: 产品 子管道类型1 子管道类型2 子管道类型3 在datatable中,我需要显示产品信息和其中一个子产品信息,如: Name Price StartDate EndDate P1Name 25$ 01/01/13 01/07/13 P2Name 25$ 01/01/13 01/07/13
- 产品
- 子管道类型1
- 子管道类型2
- 子管道类型3
Name Price StartDate EndDate
P1Name 25$ 01/01/13 01/07/13
P2Name 25$ 01/01/13 01/07/13
价格和日期来自SubproductType2价格属性
所以如果我有这个
<h:dataTable value="#{bundleBean.products}" var="myBundle" >
<ui:param name="currentSubProd" value="#sbaBean.getSubProdOfBundleFilterByCategory(myBundle.id, categoryType.internet)}" />
<h:column>
<f:facet name="header" >Name</f:facet>
#{myBundle.name}
</h:column>
<h:column>
<f:facet name="header" >Price</f:facet>
#{currentSubProd.price}
</h:column>
<h:column>
<f:facet name="header" >StartDate</f:facet>
#{currentSubProd.startDate}
</h:column>
<h:column>
<f:facet name="header" >EndDate</f:facet>
#{currentSubProd.endDate}
</h:column>
</h:dataTable>
名称
#{myBundle.name}
价格
#{currentsubod.price}
起始日期
#{currentsubod.startDate}
结束日期
#{currentsubod.endDate}
它工作得很好,但每次在xhtml文件中调用#currentsubod时,它都会调用bean方法,在本例中是3次。因此,如果我在方法中有一些查询,DB将执行查询3次
我意识到,使用ui:repeat在列中可以很好地工作,但不能使用ui:repeat在数据表上的每一列中放置和放置ui:repeat
像这样(不工作):
名称
#{myBundle.name}
价格
#{currentsubod.price}
起始日期
#{currentsubod.startDate}
结束日期
#{currentsubod.endDate}
你知道怎么解决吗
提前谢谢
注意。停止在getter方法中执行业务逻辑。Getter方法应该只返回已经准备好的数据 改为在(post)构造函数或操作(侦听器)方法中执行业务逻辑 另见:
ui:param
只是一个别名。每次执行{currentsubod.Y}
时,它都会计算{sbaBean.getsubpodofBundleFilterByCategory(myBundle.id,categoryType.internet).Y}
。在显示表(在其构造函数中、在beforePhase或在
中)之前,不能先填充对象,然后对其值进行迭代吗?
<ui:repeat name="currentSubProd" value="#sbaBean.getSubProdOfBundleFilterByCategory(myBundle.id, categoryType.internet)}" >
<h:column>
<f:facet name="header" >Name</f:facet>
#{myBundle.name}
</h:column>
<h:column>
<f:facet name="header" >Price</f:facet>
#{currentSubProd.price}
</h:column>
<h:column>
<f:facet name="header" >StartDate</f:facet>
#{currentSubProd.startDate}
</h:column>
<h:column>
<f:facet name="header" >EndDate</f:facet>
#{currentSubProd.endDate}
</h:column>
</ui:repeat>
</h:dataTable>