我需要为<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>
这样一切都会显示出来,但当我点击复选框时会触发列排序,这不是我想要的。
我在网上搜索了答案,但没有发现我的问题。当我点击第二个代码示例中的复选框时,是否有人知道更好的方法来执行此类操作或至少如何避免排序?
非常感谢。
答案 0 :(得分:0)
您是否尝试使用此类标题:
<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替换。希望这有帮助!
亚历。