参数值连接到Primefaces中的动态列?

时间:2013-12-20 19:54:22

标签: java jsf jsf-2 primefaces

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

1 个答案:

答案 0 :(得分:0)

只需使用括号写作

#{cust[colum.entidadBean]}

希望它有所帮助...