我在JSF中使用Primefaces 4生成数据表中的动态列。事实证明,通过两个列表生成它的唯一方法是使用数据网格和bean的其他属性。 到目前为止,它只发生了这件事。
<p:dataTable id="listCust" var="cust" value="#{mantClienteMB.customers}" rows="5"
rowIndexVar="rowIndex" paginatorPosition="top" resizableColumns="true" emptyMessage="">
<p:column headerText="N°" width="auto">
<h:outputText value="#{rowIndex+1}" />
</p:column>
<c:forEach items="#{mantClienteMB.columnCustomer}" var="colum">
<p:column headerText="#{colum.descripcion}" width="auto">
<ui:fragment rendered="#{colum.entidadBean == 'code'}">
<h:outputText value="#{cust.code}" />
</ui:fragment>
<ui:fragment rendered="#{colum.entidadBean == 'name'}">
<h:outputText value="#{cust.name}" />
</ui:fragment>
<ui:fragment rendered="#{colum.entidadBean == 'comercialName'}">
<h:outputText value="#{cust.comercialName}" />
</ui:fragment>
<ui:fragment rendered="#{colum.entidadBean == 'isActive'}">
<h:outputText value="#{cust.isActive}" />
</ui:fragment>
</p:column>
</c:forEach>
</p:dataTable>
在代码java中:
private List<BaCustomer> customers;
private List<ValidColumnKey> columnCustomer;
this.setCustomers(new ArrayList<BaCustomer>());
this.getCustomers().add(new BaCustomer("P0001", "PASSARELA S.A.C.", "PASSARELA", true));
this.getCustomers().add(new BaCustomer("P0002", "DARNOX S.A.C.", "DONOFRIO", true));
this.setColumnCustomer(new ArrayList<ValidColumnKey>());
this.getColumnCustomer().add(new ValidColumnKey(1, "Codigo", "code"));
this.getColumnCustomer().add(new ValidColumnKey(2, "Nombre", "name"));
this.getColumnCustomer().add(new ValidColumnKey(3, "Nombre Comercial", "comercialName"));
this.getColumnCustomer().add(new ValidColumnKey(4, "Estado", "isActive"));
但是我想到,如果我可以将主列表中别名的值与第二个列表中的属性bean的名称连接起来,那么contenacion的问题是只打印字符串,但不是结果链。
<p:dataTable id="listCust" var="cust" value="#{mantClienteMB.customers}" rows="5"
rowIndexVar="rowIndex" paginatorPosition="top" resizableColumns="true" emptyMessage="">
<p:column headerText="N°" width="auto">
<h:outputText value="#{rowIndex+1}" />
</p:column>
<c:forEach items="#{mantClienteMB.columnCustomer}" var="colum">
<p:column headerText="#{colum.descripcion}" width="auto">
<ui:param name="myVar" value="cust.#{colum.entidadBean}" />
<h:outputText value="#{myVar}" />
</p:column>
</c:forEach>
</p:dataTable>
任何人都知道如何打印字符串值而不仅仅是字符串作为描述。 图片: http://s2.subirimagenes.com/otros/previo/thump_8745153listcustomers.jpg
答案 0 :(得分:0)
只需使用括号写作
#{cust[colum.entidadBean]}
希望它有所帮助...