也许有人可以帮我这个: 我有一个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;
}
});
}
}
有人能帮帮我吗?
答案 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());
}
});