为什么JSF(primefaces)无法为java.util.Arrays$ArrayList类型创建新的集合实例
也许有人可以帮我: 我有一个dataTable,它由ArrayList填充,当我在引起一些更改后尝试更新这个dataTable时,我遇到了一个异常 严重[http-apr-8080-exec-1]com.sun.faces.renderkit.html_basic.MenuRenderer.createCollection无法为java.util.Arrays$ArrayList类型创建新的集合实例 java.lang.InstantiationException:java.util.Arrays$ArrayList 原因:java.lang.NoSuchMethodException:java.util.Arrays$ArrayList。() 我在软件上看到了类似的问题,但不幸的是,这对我没有用。 (我的ArrayList没有被Arrays.asList实例化)。我的应用程序运行正常,但我需要删除此异常 这是my.xhtml的一部分,其中定义了dataTable:为什么JSF(primefaces)无法为java.util.Arrays$ArrayList类型创建新的集合实例,jsf,exception,arraylist,primefaces,Jsf,Exception,Arraylist,Primefaces,也许有人可以帮我: 我有一个dataTable,它由ArrayList填充,当我在引起一些更改后尝试更新这个dataTable时,我遇到了一个异常 严重[http-apr-8080-exec-1]com.sun.faces.renderkit.html_basic.MenuRenderer.createCollection无法为java.util.Arrays$ArrayList类型创建新的集合实例 java.lang.InstantiationException:java.util.Array
<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;
}
});
}
}
public void decOrder(){
int i=selectedColumn.getOrder();
如果(i>0){
columnWrapperList.get(i).setOrder(i-1);
columnWrapperList.get(i-1).setOrder(i);
columnWrapperList.sort(新的Comparator(){
@凌驾
公共int比较(ColumnWrapper o1,ColumnWrapper o2){
返回o1.getOrder()
有人能帮我吗?不用排序就行了?如果是,请尝试使用集合进行排序。排序:
Collections.sort(columnWrapperList, new Comparator<ColumnWrapper>() {
@Override public int compare(ColumnWrapper o1, ColumnWrapper o2) {
return Integer.compare(o1.getOrder(), o2.getOrder());
}
});
Collections.sort(columnWrapperList,new Comparator(){
@重写公共int比较(ColumnWrapper o1,ColumnWrapper o2){
返回整数.compare(o1.getOrder(),o2.getOrder());
}
});
谢谢,但它的工作原理是一样的。据我所知,除了调用方法(静态或来自对象)之外,这是一样的。顺便说一句,排除排序不会影响异常。你好,亲爱的@BalusC,在问这个问题之前,我仔细阅读了你的答案,但仍然找不到有助于我解决问题的答案(我知道这是同一个错误域)。您将我的问题标记为引用的重复问题,但在这个问题中,您建议检查Arrays.asList初始化以获取ArrayList,所以我做了(检查不可变集合),但没有。也许你能提出更全面的解决方案?非常感谢。这里还有columnWrapperList的用法,它没有数组。asList这与数据表无关。例外情况来自menurender
,它仅用于多选selectXxx
组件,如
。哦,是的!非常感谢。我“真的”仔细阅读你的未回复,然后在我的页面添加中查找selectMany,现在它工作得很好@巴卢斯再次感谢:)