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

如何在JSF/Richfaces中向列标题添加复选框?,jsf,richfaces,Jsf,Richfaces,我需要在中的每个列标题中添加复选框。选中复选框表示相应列将包含在从表数据生成的pdf报告中。其他要求是:列必须是可排序的,并且我必须能够混合使用和标记 我试着用两种不同的方法来实现这一点。如果我这样使用: <rich:dataTable> <f:facet name="header"> <rich:columnGroup> <rich:column sortBy="#{bean.foo}"> <h:ou

我需要在
中的每个列标题中添加复选框。选中复选框表示相应列将包含在从表数据生成的pdf报告中。其他要求是:列必须是可排序的,并且我必须能够混合使用
标记

我试着用两种不同的方法来实现这一点。如果我这样使用

<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>

然后排序图标不显示。或者,我尝试将文本和复选框放在
中,例如:

<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>


注意,我现在使用的是RichFaces4.0.0/JSF2.0,因此rich:columns不再存在,但可以用c:forEach替换。希望这有帮助

亚历克斯