为什么我得到JSF(primefaces)无法为类型java.util.Arrays $ ArrayList创建新的Collection实例

时间:2016-07-28 10:35:41

标签: jsf exception arraylist primefaces

也许有人可以帮我这个: 我有一个dataTable,它由ArrayList<>填充当我尝试更新此dataTable后,它有一些异常

  

SEVERE [http-apr-8080-exec-1] com.sun.faces.renderkit.html_basic.MenuRenderer.createCollection无法为类型java.util.Arrays $ ArrayList创建新的Collection实例    java.lang.InstantiationException:java.util.Arrays $ ArrayList

引起:java.lang.NoSuchMethodException:java.util.Arrays $ ArrayList。()

我在SOF上看到了类似的问题,但不幸的是,这对我没用。 (我的ArrayList不由Arrays.asList实例化)。我的应用程序工作正常,但我需要删除此异常。

这是我的.xhtml的一部分,其中定义了dataTable:

<p:dataTable id="columnsDef"
   widgetVar="columnsList"
   value="#{setup.columnWrapperList}"
   var="columnVar"
   rowKey="#{columnVar.wrappedColumnId}"
   selectionMode="single"
   selection="#{setup.selectedColumn}"
   lazy="false"
   rows="10"
   paginator="false"
   style="width: 100%"
   emptyMessage="#{msg['common.emptyMsg']}"
   resizableColumns="true"
   filterEvent="enter"
   tableStyle="width: auto">

这是.xhtml whre setup.columnWrapperList更新的一部分

<div class="left">
            <p:commandButton icon="ui-icon-triangle-1-n"
                             actionListener="#{setup.decOrder}"
                             update="@([id$=columnsDef])"
                             />
            <p:commandButton icon="ui-icon-triangle-1-s"
                             actionListener="#{setup.incOrder}"
                             update="@([id$=columnsDef])"
                             />
        </div>

最终导致更改ArrayList的“setup”bean的一部分:

    public void decOrder() {
    int i = selectedColumn.getOrder();
    if (i > 0) {
        columnWrapperList.get(i).setOrder(i - 1);
        columnWrapperList.get(i - 1).setOrder(i);
        columnWrapperList.sort(new Comparator<ColumnWrapper>() {
            @Override
            public int compare(ColumnWrapper o1, ColumnWrapper o2) {
                return o1.getOrder() < o2.getOrder() ? -1 : 1;
            }
        });
    }
}

有人能帮帮我吗?

1 个答案:

答案 0 :(得分:-1)

它的工作没有那种?如果是这样,请尝试使用 Collections.sort

进行排序
Collections.sort(columnWrapperList, new Comparator<ColumnWrapper>() {
    @Override public int compare(ColumnWrapper o1, ColumnWrapper o2) {
        return Integer.compare(o1.getOrder(), o2.getOrder());
    }
});