【问题标题】:How to add a checkbox to column headers in JSF/Richfaces?如何在 JSF/Richfaces 的列标题中添加复选框?
【发布时间】:2011-05-30 13:47:50
【问题描述】:

我需要为<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>

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

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

这样显示所有内容,但是当我单击复选框时,它会触发列排序,这不是我想要的。

我在网上搜索了有关该问题的答案,但没有发现与我的问题完全一样的问题。有谁知道更好的方法来做这样的事情,或者至少在我点击第二个代码示例中的复选框时如何避免排序?

非常感谢。

【问题讨论】:

    标签: jsf richfaces


    【解决方案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 替换。希望这会有所帮助!

    亚历克斯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2023-02-08
      • 1970-01-01
      相关资源
      最近更新 更多