2013-11-01 43 views
0

我有下面的複合材料部件PrimeFaces dataTable的複合組件默認值

<ui:component xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:cc="http://java.sun.com/jsf/composite" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <cc:interface> 
     <cc:attribute name="rows" /> 
     <cc:attribute name="value" 
      type="org.primefaces.model.LazyDataModel" /> 
     <cc:attribute name="var" /> 
     <cc:attribute name="id" /> 
     <cc:attribute name="rowStyle" default="false"/> 
    </cc:interface> 

    <cc:implementation> 
     <p:dataTable value="#{cc.attrs.value}" 
      rendered="#{not empty cc.attrs.value}" id="#{cc.attrs.id}" 
      paginator="true" rows="25" 
      currentPageReportTemplate="Showing {startRecord}-{endRecord} of {totalRecords}" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
      rowsPerPageTemplate="25,50,100" paginatorPosition="bottom" 
      lazy="true" rowStyleClass="#{cc.attrs.rowStyle}"> 
      <c:set target="#{component}" property="var" value="#{cc.attrs.var}"/> 
      <cc:insertChildren /> 
     </p:dataTable> 
    </cc:implementation> 
</ui:component> 

我的要求是: 在少數情況下,我會通過rowStyle的值,否則,如果該值不通過,就應採取默認值。

我又多了以下線在我的複合成分

<cc:attribute name="rowStyle" default="false"/> 

但它無法正常工作。爲什麼?

回答

0

我認爲你需要輸入acctual CSS類名到默認值。

因此,默認值不是真/假標誌,而是具有實際值的字段。

1

請記住,default屬性是用於處理在屬性不通過,不要在那裏屬性爲空的情況下的情況。

因此,考慮到這個接口:

<cc:interface> 
    <cc:attribute name="monkey" /> 
    <cc:attribute name="food" default="banana" /> 
</cc:interface> 

如果我調用它像這樣的food值將是banana

<barrel monkey="Bonzo" /> 

但是,如果myFoodnull,我調用它像這個:

<barrel monkey="Bonzo" food="#{myFood}" /> 

然後food的值將是null