Основные лица ExcelExporter с помощью CommandLinks - PullRequest
3 голосов
/ 14 октября 2011

У меня есть приложение, которое содержит commandLinks в таблице данных Primefaces. CommandLinks ссылается на другие страницы в приложении и передает параметры. Когда я пытаюсь экспортировать dataTable, используя ExcelExporter от Primefaces, сгенерированный файл .xls содержит атрибут value для commandLink, а не атрибут value для outputText, вложенный в commandLink.

Столбец внутри кода dataTable:

<p:dataTable var="dataRow" id="myTable">
    <p:column>
        <f:facet name="header">
            <h:outputText value="MyColumn" />
        </f:facet>
        <h:outputLink value="myPage.xhtml">
            <f:param name="columnId" value="#{dataRow.columnId}" />
            <h:outputText value="#{dataRow.columnName }" />
       </h:outputLink>
    </p:column>
</p:dataTable>

Код ExcelExporter:

<h:commandLink>
    <h:outputText value="Export" />
       <p:dataExporter type="xls" target="myTable" fileName="tableResults"/>
</h:commandLink>

Когда я экспортирую таблицу с помощью ExcelExporter, экспортируемые данные - это «myPage.xhtml», когда я хочу, чтобы это были данные, содержащиеся в «# {dataRow.columnId}». Есть ли способ отформатировать ссылки, чтобы они экспортировались с текстом, который я хочу?

1 Ответ

1 голос
/ 18 октября 2011

Мне удалось решить эту проблему, изменив ссылки на commandLinks с помощью действий, определяющих навигацию и setPropertyActionListeners для передачи параметров.Похоже, что PrimeFaces всегда берет значение из родительского компонента, так что это, казалось, лучший обходной путь.Код dataExporter остался прежним.

Модифицированный код xhtml:

<p:dataTable var="dataRow" id="myTable">
    <p:column>
        <f:facet name="header">
            <h:outputText value="MyColumn" />
        </f:facet>
        <h:commandLink value="#{dataRow.columnName}" action="myPage">
            <f:setPropertyActionListener target="#{myPage.columnId}" 
               value="#{dataRow.columnId}"/> 
       </h:commandLink>
    </p:column>
</p:dataTable>

Добавлено правило навигации в face-config.xml:

<navigation-rule>
  <navigation-case>
       <from-outcome>myPage</from-outcome>
       <to-view-id>/myPage.xhtml</to-view-id>
       <redirect />
   </navigation-case>
</navigation-rule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...