我正在尝试在JSF中的现有rich:datatable中的每个列的标头中添加一个过滤器。我使用了Exadel演示来添加过滤器,结果很好,但它也从上部标题中删除了排序功能。我想将sort函数保留在上面的标签头中,并过滤第二个inputText头。
作为一个快速而肮脏的例子,这是基本结构:
<rich:dataTable id="thetable" value="#{stuff.list}" var="s">
<f:facet name="header">
<rich:columnGroup>
<rich:column sortBy="#{s.field1}">
<h:outputText="Field 1" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<f:facet name="header">
<h:inputText value="#{stuffSorter.field1}">
<a4j:support event="onkeyup" reRender="thetable" ignoreDupResponses="true"
requestDelay="700" onComplete"setCaretToEnd(event);" />
</h:inputText>
</f:facet>
</rich:column>
</rich:dataTable>
当然会有更多的列,而setCaretToEnd只是一个Javascript函数,它将插入符保留在列过滤器的末尾。这几乎是正确的。我有两个标题。顶部的一个是列标签,下面的一个是过滤器,结果列在下面。我已经构建了过滤类,并且它的工作非常出色。但是,我似乎无法找到一种方法来将sort函数重新放回到最顶端的标题中。如果我将“sortBy”字段放在过滤器框旁边,它确实有效,但我更倾向于将其放在上面,但似乎插入过滤器列的数据正在阻止它。
我在这里遗漏了什么,或者这对于富人来说是不太可能的:dataTable?我可以使用名称+ sort然后在同一个标题中相互叠加过滤器,但我也没有运气。试图将两个元素放入facet(outputText和inputText)从不显示outputText,即使用s:div单独包装它们也是如此。我使用bean进行排序,但奇怪的是,我正在使用的项目是使用Richfaces 3.3.3并缺少org.richfaces.component.SortOrder,尽管它在richfaces-ui-3.3中有许多其他项目。 0.3-final.jar。
答案 0 :(得分:1)
在Richfaces 3.3中,支持标题和过滤器构面。放在标题构面中的内容将显示在顶部。过滤器代码可放置在过滤器构面内,该构面将显示在标题下方。请检查以下问题:Filter Facet is not working in Richface 4.3x,那里会显示旧格式的richfaces 3.3。
<f:facet name="filter">
</f:facet>