Как создать компонент, похожий на dataTable, но с программной вставкой столбцов? - PullRequest
1 голос
/ 24 октября 2011

Мне нужно отобразить двумерную таблицу с большим количеством столбцов и строк, и эти два измерения не являются фиксированными. При использовании JSF2 dataTable существует ограничение на то, что число столбцов не может быть динамическим: каждый столбец должен иметь соответствующий тег jsf. Есть ли способ вставить столбцы программно, как для строк в dataTable? Также PanelGrid не подходит, потому что вы должны указать и написать все теги вручную. Я предпочитаю не использовать javascript для создания такого компонента, я бы хотел использовать как можно больше JSF2.

1 Ответ

0 голосов
/ 24 октября 2011

Стандартный набор компонентов JSF не имеет такого компонента, в котором он был бы логически назван <h:columns>. Однако существуют сторонние библиотеки компонентов, которые имеют такой компонент. Например, Томагавк с <t:columns> и PrimeFaces с <p:columns>. Компоненты Tomahawk не создают никакого дополнительного look'n'feel, поэтому это идеально, если вы хотите полностью контролировать CSS самостоятельно. PrimeFaces генерирует настраиваемый look'n'feel с помощью CSS themeroller framework , так что это идеально, если вы хотите использовать themeroller для управления look'n'feel.

Вот пример того, как вы можете использовать Томагавк <t:columns>, скопированный и слегка измененный по сравнению с его документацией тега :

<t:dataTable value="#{bean.rows}" var="row">
    <t:columns value="#{bean.columns}" var="column">
        <f:facet name="header">
            <h:outputText value="#{column.name}"/>
        </f:facet>
        <h:outputText value="#{row[column.name]}"/>
    </t:columns>
</t:dataTable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...