2016-07-28 1 views
1

おそらく誰かが私を助けることができます: 私はdataTableを持っており、ArrayList <>私はSEVERE例外JSF(primefaces)を取得する理由java.util.Arrays型の新しいCollectionインスタンスを作成できませんArrayList

を持って、その中にいくつかの変更を引き起こした後、こののdataTableを更新しよう[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によってインスタンス化されません)。私のアプリは正常に動作しますが、この例外を取り除く必要があります。

このdataTableの定義である私の.xhtmlの一部です: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> 

と "セットアップ" 豆のfinaly一部を更新whre

<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の一部であり、 ArrayListの変更を引き起こす:

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

こんにちは親愛なる@BalusC私は(私はそれがだと理解しcarefulyこの質問をする前に、あなたの答えを読んで、そしてまだ私の問題を支援するための答えを見つけることができませんエラーの同じ分野)。私の質問は、[link](http://stackoverflow.com/questions/17359226/jsf-selectmanycheckbox-for-enum-severe-unable-to-create-new-collection-instan)を参照して重複としてマークしますが、これにはあなたはArrayListのArrays.asListの初期化をチェックするように提案していますので、私はそれを行いました(不変なコレクションをチェックしてください)。もっと包括的なソリューションを提案できますか?ありがとうございました! – Bender

+0

また、ここにはcolumnWrapperListの使用法があり、Arrays.asListはありません。http://puu.sh/qhmEi/437d845a51.png – Bender

+0

これはデータテーブルとは関係ありません。例外は、 ' 'のような複数選択の' selectXxx'コンポーネントでのみ使用される 'MenuRenderer'からの例外です。 – BalusC

答えて

-1

これはソートなしでも機能しますか?もしそうなら、Collections.sortで並べ替えしよう:

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

ありがとう、それはちょうど同じ動作します。私が知る限り、起動(staticまたはオブジェクトから)のメソッドを除いて、同じことです。 – Bender

+0

ところで、ソートを除外しても例外には影響しません。 – Bender

関連する問題