Несколько строк Нижнего колонтитула в таблице данных JSF

Вы можете использовать -TemplateParameterUri и -TemplateUri и давать общедоступные URL-адреса, где хранятся шаблоны.

9
задан David Waters 16 April 2009 в 13:08
поделиться

4 ответа

Решением, которое я в итоге выбрал, был пользовательский рендер, связанный с t: datatable (расширение томагавка до datatable)

public class HtmlMultiHeadTableRenderer extends HtmlTableRenderer

Мне пришлось переопределить только один метод

protected void renderFacet(FacesContext facesContext,   
  ResponseWriter writer, UIComponent component, boolean header)

, в котором я искал фасеты с именами header, header2, header3 ... headerN (я перестаю искать, как только отсутствует один), и то же самое с нижним колонтитулом. Это позволило мне сделать код, подобный

<h:dataTable ... var="row">
  <h:column>
    <f:facet name="header">
     Header
    </f:facet>
    <f:facet name="header2">
     A second Tr with th's
    </f:facet>
    <h:outputText value="#{row.value}"/>
    <f:facet name="footer">
     FirstFooter
    </f:facet>
    <f:facet name="footer2">
     Second Footer in a new tr
    </f:facet>
  </h:column>
</h:dataTable>

. Это заняло около одного дня (с некоторыми другими расширениями, такими как разрешение colspans на основе групп) для кодирования и документирования,

5
ответ дан 4 December 2019 в 20:24
поделиться

Как сказал Макдауэлл, panelGrid выполнит то, что вы просите, без пользовательских элементов управления, если я что-то не упустил.

<f:facet name="footer">
    <h:panelGrid columns="1"> 
        <h:outputText value="FirstFooter" />
        <h:outputText value="Second Footer in a new tr" />
    </h:panelGrid>
</f:facet>

Это выглядит следующим образом

<tfoot>
    <tr>
        <td colspan="3">
            <table>
                <tbody>
                    <tr>
                        <td>FirstFooter</td>
                    </tr>
                    <tr>
                        <td>Second Footer in a new tr</td>
                    </tr>
                </tbody>
            </table>
        </td>
    </tr>
</tfoot>

Вы также можете использовать другие теги, кроме outputText, в PanelGrid, чтобы получить любой эффект, который вы ищете (просто убедитесь, что вы обернули их в PanelGroup или что-то подобное).

3
ответ дан 4 December 2019 в 20:24
поделиться

Столбец Richfaces имеет атрибут breakBefore, который позволит вам сделать что-то вроде этого:

<f:facet name="footer">
    <rich:column>
        <h:outputText value="First Footer"/>
    </rich:column>
    <rich:column breakBefore="true">
        <h:outputText value="Second Footer"/>
    </rich:column>
</f:facet>

после, но, к сожалению, не используете указанную вами библиотеку.

Если вы используете Facelets, вы всегда можете просто создать обычную таблицу с помощью ui: repeat .

2
ответ дан 4 December 2019 в 20:24
поделиться

(Фасеты должны иметь уникальные имена (они хранятся в карте фасетов ).)

Два способа сделать это весной:

  1. Просто поместите panelGrid в нижний колонтитул и используйте таблицы стилей, чтобы получить желаемый вид.
  2. Создайте пользовательский компонент отображает нужную разметку.
1
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: