如何在JSF / Richfaces中的列标题中添加复选框?

问题描述

| 我需要在“ 0”中的每个列标题添加复选框。选中的复选框表示相应的列将包含在要从表数据生成的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>
然后,排序图标不显示。另外,我尝试将文本和复选框放在ѭ5内,例如:
<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>
这样可以显示所有内容,但是当我单击复选框时,它会触发列排序,这不是我想要的。 我已经在网上搜索的答案,但没有找到与我的问题完全相同的答案。在我单击第二个代码示例中的复选框时,是否有人知道做这种事情的更好方法,或者至少如何避免排序? 非常感谢你。     

解决方法

        您是否尝试过使用这种标题:
<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代替。希望这可以帮助! 亚历克斯