#jsf #richfaces
#jsf #richfaces
Вопрос:
Мне нужно добавить флажки к заголовку каждого столбца в <rich:dataTable>
. Установленный флажок означает, что соответствующий столбец будет включен в отчет pdf, который будет сгенерирован на основе табличных данных. Дополнительные требования: столбцы должны быть сортируемыми, и я должен иметь возможность смешивать <rich:column>
и <rich:columns>
теги.
Я пытался добиться этого несколькими различными способами. Если я использую <rich:columnGroup>
вот так:
<rich:dataTable>
<f:facet name="header">
<rich:columnGroup>
<rich:column sortBy="#{bean.foo}">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</rich:column>
<rich:columns ...>
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</rich:columns>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{bean.baz}"/>
</rich:column>
<rich:columns value=... var=...>
<h:outputText value="#{bean.foobar}"/>
</rich:columns>
</rich:dataTable>
Тогда значок сортировки не отображается. В качестве альтернативы, я попытался поместить текст и флажок внутри <h:panelGroup>
, например, так:
<rich:dataTable>
<rich:column sortBy="#{bean.foo}">
<f:facet name="header">
<h:panelGroup layout="block">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</h:panelGroup>
</f:facet>
<h:outputText value="#{bean.baz}"/>
</rich:column>
<rich:columns ...>
<f:facet name="header">
<h:panelGroup layout="block">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</h:panelGroup>
</f:facet>
<h:outputText value="#{bean.foobar}"/>
</rich:columns>
</rich:dataTable>
Таким образом, все отображается, но когда я нажимаю на флажок, запускается сортировка столбцов, а это не то, что я хочу.
Я искал в Интернете ответ на, но не нашел ничего похожего на мою проблему. Кто-нибудь знает лучший способ сделать что-то подобное или, по крайней мере, как избежать сортировки, когда я нажимаю флажок во втором примере кода?
Большое вам спасибо.
Ответ №1:
Вы пробовали использовать такой заголовок :
<rich:columns value="#{bean.columns}" var="#{column}">
<rich:column>
<f:facet name="header">
<h:panelGroup>
<h:outputText value="#{column.title}" />
<br />
<h:selectBooleanCheckbox value="#{column.selected}" />
</h:panelGroup>
</f:facet>
<!-- Column data -->
</rich:column>
</rich:columns>
Обратите внимание, что теперь я использую RichFaces 4.0.0 / JSF 2.0, поэтому rich: columns больше не существует, но может быть заменен c: forEach. Надеюсь, это поможет!
Алекс.