Использование одного идентификатора компонента (dataTable) внутри составного компонента

Как я могу использовать идентификатор компонента DataTable (Primefaces 2.2.1) внутри составного компонента в Java Server Faces 2.1?

Теперь у меня есть вид:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:haiq="http://java.sun.com/jsf/composite/haiqcomponents"
                template="/WEB-INF/templates/login/main.xhtml">

    <ui:define name="content">
        <h:form prependId="false">  <!-- prependId="true" ??? -->
            <p:dataTable id="leakTable" var="leak" value="#{dataExplorer.data}">   

                <p:column filterBy="#{leak.source}" headerText="source" footerText="source" filterMatchMode="contains" >  
                    <f:facet name="header">  
                        <h:outputText value="source" />  
                    </f:facet>  
                    <h:outputText value="#{leak.source}"  />  
                </p:column>  

                <!-- Few more columns here -->
            </p:dataTable> 

            <!-- Add : prefix before ID? -->
            <haiq:exporter target=":leakTable" fileName="#{msgs.fileName}" imageLibrary="images" pageOnly="false" />

        </h:form>   
    </ui:define>
</ui:composition>

Мой составной компонент:

<?xml version='1.0' encoding='UTF-8' ?>
<!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:cc="http://java.sun.com/jsf/composite"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.prime.com.tr/ui">

<!-- INTERFACE -->
<cc:interface>
    <cc:attribute name="fileName" default="data" />
    <cc:attribute name="target" required="true" type="java.lang.String" />
    <cc:attribute name="pageOnly" default="true" type="java.lang.Boolean" />
    <cc:attribute name="imageLibrary" default="images" />
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>
    <h:commandLink>  
        <h:graphicImage library="#{cc.attrs.imageLibrary}" name="excel.png" />  
        <p:dataExporter type="xls"
                        target="#{cc.attrs.target}" 
                        fileName="#{cc.attrs.filename}" 
                        pageOnly="#{cc.attrs.pageOnly}" />  
    </h:commandLink>  
</cc:implementation>
</html>

После рендеринга представления произошла следующая ошибка:

javax.faces.FacesException: Cannot find component ":leakTable" in view.
at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:89)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)

Удаление: before leakTable (в атрибуте target) или изменение preperndId (в форме) на true не решает проблему.

Как я могу использовать datatable внутри cc? Подобная проблема описанаВот

Ответы на вопрос(1)

Ваш ответ на вопрос