当前位置: 首页 > 知识库问答 >
问题:

PrimeFaces datatable初始sortBy不工作

韩嘉胜
2023-03-14

我有一个使用apache myfaces 2.0.2的PrimeFaces 3.2数据表。我想要一个初始排序。我的JSF看起来像:

<p:dataTable  id="serverdata" var="serverdata" sortBy="#{serverdata[0]}" sortOrder="descending" 
                value="#{ serverDataTable.list }" rows="10" editable="true" 
                paginator="true" rowsPerPageTemplate="10,20,50"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                <f:facet name="header">  
                   Datatable
                 </f:facet>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Datum"/>
                    </f:facet>
                    <h:outputText value="#{serverdata[0]}">
                    </h:outputText>
                </p:column>

但是我得到一个unsupportedOperationException:结果列表是只读的。当我删除其中的sortBy标记时,它工作得很好。

所以我的问题是:如何实现初始排序?

共有1个答案

鲁羽
2023-03-14

排序是对原始的列表执行的。如果它是只读的,则引发异常。尝试相同的方法,但使用常规的、可变的列表

编辑:在bean中创建一个常规列表:

public class MyBean {
...
List<MyObject> myList = new ArryList<MyObject>();
myList.add(new MyObject("a"));
myList.add(new MyObject("b"));
myList.add(new MyObject("c"));
...

然后使用如下方式排序:value=“#{mybean.mylist}”var=“myvar”sortby=“#{myvar.stringprop}”

Edit2:如果排序参数是字符串或数字,则不需要自定义任何内容。如果要对其他任何东西进行排序,则必须定义一个自定义的sortFunction,

如果您使用高级选项,如懒惰加载(这在PF3.2中被打断了--您现在可以更新到3.3了--它已经在29.5发布并且声称已经解决了这个问题),您将不得不定义一个自定义模型,自己负责过滤和排序。

因此,如果要根据数组的内容对数据进行排序,则需要定义属性sortfunction=“#{MyBean.SortData()}”

 类似资料:
  • Creates a new sequence with the same elements as this one, but ordered by the results of the given function. You can pass: a string, to sort by the named property a function, to sort by the result of

  • 我还有一个活动。一切都很好,如果我改变开关,应用程序就会改变。 我还有一个启动活动,在中,我检查模式: 初创公司运转良好。当我关闭应用程序并重新启动时,背景色等对两种模式都是正确的。我在活动上有3个可抽屉。这些也在两种替代模式之间发生了细微的变化。 塞图普伊·爪哇 activity_poker.xml

  • 我的应用程序是基于Swing的。我想介绍JavaFX,并将其配置为在辅助显示器上呈现场景。我可以使用JFrame来保存JFXPanel,JFXPanel可以保存JFXPanel,但我希望使用JavaFX API来实现这一点。 将com.sun.glass.ui.application子类化并使用application.launch(这)不是一个选项,因为调用线程将被阻塞。 编辑:结论 问题:非平凡

  • 初始化工程是一个项目开发的第一步。迈出了这一步,你就成功了一半。我相信大部分同学构建了一个项目,是会拼着老命写完的(逃...)。 这里,我尝试用简单的方式来说明一个工程的构建。然后,再将简单的方式工程化(复杂化),最后拼凑成目前weex开源的代码结构。 安装weex-toolkit weex-toolkit是一个很好的工具供我们工程构建。首先,第一步是安装该工具: $npm install -g

  • Ember-computed-sortby Addon to make sorting a little easier for Ember.js when the sort order is immutable. This addon was originally a proof of concept for emberjs/rfcs#87. However that RFC was reject

  • 我有一个工厂,它应该根据名称返回一个实现。 为了让每次调用getMoules方法都不创建实例,有一个映射,其中所有的模块都必须在bootstrap类中初始化。我想摆脱手动操作的需要(也是所有的类都有一个显著的特征)。 我想到的选项列表: 反射(我们可以使用Scala反射API或任何第三方库) 自动化流程 需要在启动时立即初始化 反思是一种痛苦 宏只改变代码,执行稍后发生。 我们能把初始化过程移到编