【问题标题】:JSF - Richfaces 3.3.3 rich datatable - Both sorting and filtering with two headers?JSF - Richfaces 3.3.3 丰富的数据表 - 使用两个标题进行排序和过滤?
【发布时间】:2013-06-28 20:43:56
【问题描述】:

我正在尝试在 JSF 中现有的 rich:datatable 中的每一列的标题中添加一个过滤器。我使用Exadel 演示来添加过滤器,效果很好,但它也从上部标题中删除了排序功能。我想将排序功能保留在上标签标题中,并在第二个 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 函数,它将插入符号保留在列过滤器的末尾。这几乎是恰到好处。我得到两个标题。顶部是列标签,正下方是过滤器,结果列在其下方。我已经建立了过滤类,它工作得很好。但是,我似乎无法找到将排序函数返回到最顶层标题的方法。如果我将“sortBy”字段放在过滤器框旁边,它确实有效,但我更愿意将它放在上面,但似乎插入到过滤器列中的数据阻止了这种情况。

我是否在这里遗漏了什么,或者这对于 Rich:dataTable 来说不太可能?我可以使用名称+排序,然后在同一个标​​题中将过滤器放在一起,但我也没有运气。尝试将这两个元素(outputText 和 inputText)都放入 facet 中永远不会显示 outputText,即使使用 s:div 单独包装它们也是如此。我会使用 bean 进行排序,但奇怪的是,我正在从事的项目使用 Richfaces 3.3.3 并且缺少 org.richfaces.component.SortOrder,尽管它在richfaces-ui-3.3 中有许多其他项目.3-final.jar。

【问题讨论】:

    标签: jsf sorting filter datatable richfaces


    【解决方案1】:

    在 Richfaces 3.3 中,支持 header 和 filter facet。您放入标题方面的内容将显示在顶部。您可以将过滤器代码放置在过滤器方面,该过滤器将显示在标题下方。请检查这个问题:Filter Facet is not working in Richface 4.3x,这里显示的是richfaces 3.3的旧格式。

     <f:facet name="filter">
    </f:facet>
    

    【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2011-10-14
    • 2015-11-30
    • 2013-07-01
    • 2011-07-18
    • 1970-01-01
    • 2011-09-16
    • 2012-05-31
    • 2011-03-29
    相关资源
    最近更新 更多