我正在使用:
我有一个表,我想重用作为数据或子表取决于我使用该组件的页面,我想放,如果但它不起作用,这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:o="http://omnifaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:tablas="http://java.sun.com/jsf/composite/tablas"
>
<!-- INTERFACE -->
<composite:interface>
<composite:attribute name="listaPaqueteItems" required="true" />
<composite:attribute name="subtable" required="false" default="false" />
</composite:interface>
<!-- IMPLEMENTATION -->
<composite:implementation>
<c:if test="#{!cc.attrs.subtable}">
<rich:dataTable id="tabla_items_del_paquete"
value="#{cc.attrs.listaPaqueteItems}"
var="p"
rowKeyVar="row_tabla_items_del_paquete"
rows="10"
rowClasses="odd-row, even-row"
styleClass="stable">
</c:if>
<c:if test="#{cc.attrs.subtable}">
<rich:collapsibleSubTable id="subtable">
</c:if>
<rich:column>
<f:facet name="header">
<h:outputText value="#" />
</f:facet>
<h:outputText value="#{row_tabla_items_del_paquete + 1}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="#{msgs['abm.paquete.item.tabla.codigo']}" />
</f:facet>
<h:outputText value="#{p.producto.codigo}" />
</rich:column>
<rich:column colspan="2">
<f:facet name="header">
<h:outputText value="#{msgs['abm.paquete.item.tabla.nombre']}" />
</f:facet>
<b>
<h:outputText value="#{p.producto.nombre}" />
</b>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="#{msgs['abm.paquete.item.tabla.descuento.final']}" />
</f:facet>
<h:outputText value="#{p.descuentoFinal}" />
</rich:column>
<c:if test="#{!cc.attrs.subtable}">
</rich:dataTable>
</c:if>
<c:if test="#{cc.attrs.subtable}">
</rich:collapsibleSubTable>
</c:if>
</composite:implementation>
</html>
基本上问题是不是有效的XHTML,任何完成这种情况的想法并尝试将这些代码重用为表或子表,一个可能的想法是外部的<rich:colum>
标签在另一个模板和包装中,在datable或如下所示:
<rich:collapsibleSubTable
expanded="#{false}"
id="tabla_periodos"
rowKeyVar="row_subtable"
expandMode="client"
value="#{p.periodoDescuentos}"
var="per"
rendered="#{not empty p.periodoDescuentos}"
>
<!-- Include Columns-->
</rich:collapsibleSubTable>
我认为这样可行但也许是另一种更好的方法。
答案 0 :(得分:2)
您可以使用以下代码创建facelet标记:
TAG(myTable.xhtml):
<c:if test="#{!subtable}">
<rich:dataTable id="tabla_items_del_paquete"
value="#{listaPaqueteItems}"
var="p"
rowKeyVar="row_tabla_items_del_paquete"
rows="10"
rowClasses="odd-row, even-row"
styleClass="stable">
<ui:insert>
</rich:dataTable>
</c:if>
<c:if test="#{subtable}">
<rich:collapsibleSubTable id="subtable">
<ui:insert>
</rich:collapsibleSubTable>
</c:if>
用法:
<my:mytable>
... your dataTable content
</my:mytable>