Как добавить флажок в заголовки столбцов в JSF / Richfaces? - PullRequest
0 голосов
/ 30 мая 2011

Мне нужно добавить флажки для каждого заголовка столбца в <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 Ответ

0 голосов
/ 10 августа 2011

Вы пытались использовать заголовки такого типа:

<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 больше не существует, но его можно заменить нас: Foreach.Надеюсь, это поможет!

Алекс.

...