2016-07-28 30 views
1

Vielleicht kann mir jemand dabei helfen: Ich habe eine dataTable und es wird von ArrayList <> und wann gefüllt ich versuche, diese Datatable zu aktualisieren, nachdem einige Änderungen in ihm verursachte ich eine Ausnahme

SCHWER [http-apr-8080-exec-1] com.sun.faces.renderkit.html_basic.MenuRenderer.createCollection kann nicht haben Erstellen einer neuen Collection-Instanz für den Typ java.util.Arrays $ ArrayList java.lang.InstantiationException: java.util.Arrays $ ArrayList

Verursacht durch: java.lang.NoSuchMethodException. Java.util.Arrays $ Arraylist()

Ich sah ähnliche Fragen auf SOF aber, leider, es keinen Sinn für mich. (meine ArrayList wird nicht von Arrays.asList instanziiert). Meine App funktioniert einwandfrei, aber ich muss diese Ausnahme entfernen.

dies ist ein Teil meines .xhtml wo Datatable definieren ist:

<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"> 

hier ist ein Teil von .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> 

und finaly Teil von "Setup" Bean aktualisiert Das verursacht Änderungen in 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; 
      } 
     }); 
    } 
} 

kann jemand mir bitte helfen?

+0

Hallo liebes @BalusC ich Ihre Antworten lesen, carefuly bevor diese Frage, und immer noch keine Antworten mein Problem (Ich verstehe, finden zu helfen, dass es das gleiche Feld von Fehlern). Du markierst meine Frage als Duplikat mit Bezug auf [link] (http://stackoverflow.com/questions/17359226/jsf-selectmanycheckbox-for-enum-severe-unable-to-create-new-collection-instan) aber in diesem Frage Sie schlagen vor, Arrays.asList Initialisierung für ArrayList zu überprüfen, also habe ich es (überprüfen Sie für unveränderliche Sammlung) und ich habe keine. Vielleicht können Sie eine umfassendere Lösung vorschlagen? Vielen Dank! – Bender

+0

Auch hier ist eine Verwendung für columnWrapperList und es gibt keine Arrays.asList http://puu.sh/qhmEi/437d845a51.png – Bender

+0

Das hat nichts mit Ihrer Datentabelle zu tun. Die Ausnahme kommt von 'MenuRenderer', der nur bei Mehrfachauswahl' selectXxx' Komponenten wie '' verwendet wird. – BalusC

Antwort

-1

Es funktioniert ohne die Sorte? Wenn ja, versuchen mit Collections.sort zu sortieren:

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

Danke, aber es funktioniert genauso. Soweit ich weiß, ist es dasselbe, außer der Aufrufmethode (statisch oder vom Objekt). – Bender

+0

Übrigens - das Ausschließen der Sortierung wirkt sich nicht auf die Ausnahme aus. – Bender