2012-08-16 2 views
5

Ich bin sehr neu zu Vaadin (und zu Java).vaadin, Null Zeiger beim Versuch, Element zu sqlContainer

Ich habe eine Tabelle, die eine SQLcontainer wie so hat:

public class ProjectTable extends Table { 
     public ProjectTable(final DocumentmanagerApplication app) { 
      setSizeFull(); 
      setContainerDataSource(app.getDbHelp().getProjectContainer()); 
      setImmediate(true); 

      commit(); 
      setSelectable(true); 

     } 
    } 

ich habe eine Schaltfläche und ein Textfield, um Daten in der Tabelle zu füllen

public void buttonClick(ClickEvent event) 
    { 
     SQLContainer cont = h.getAssetContainer(); 
     String dataResult = tf.getValue().toString(); // TEXT FIELD 
     System.out.println(dataResult); 






     Object itemId = cont.addItem(); // cont is the container 
     **cont.getContainerProperty(itemId , "id").setValue(dataResult);  // BUG IS HERE !!! ** 


try { 
      cont.commit(); 
     } catch (UnsupportedOperationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

i einen "Null-Zeiger erhalte Ausnahme "egal was ich mache. in der Zeile ** cont.getContainerProperty (itemId, "id"). setValue (dataResult);

mache ich etwas falsch? und was ist Nullzeiger?

Bitte informieren Sie mich, wenn etwas unklar war.

bitte hilfe, danke im voraus.

Antwort

2

Dieser Ausdruck gibt null:

cont.getContainerProperty(itemId , "id") 

Und dann versuchen Sie eine Methode auf null aufzurufen. Dies verursacht die NullPointerException. Sehen Sie sich also an, , warum der Container einen Nicht-Null-Wert für den Schlüssel zum Zeitpunkt, an dem Sie ihn aufrufen, nicht bereitstellt.

+0

Behälter bekommen .getContainerPropertyIds hat auch ein Nullzeigerproblem. :(Ich habe keine Ahnung, warum das ist oder was ist los. jedoch. itemId ist nicht null, (überprüfte es). –

+2

Der Container enthält nicht den Artikel "itemId" * oder * das Objekt "itemId" doesn ' t habe eine Eigenschaft 'id'. Das ist die Regel, die' null' zurückgibt. 'getContainerPropertyIds' sollte nicht null zurückgeben, sondern eine leere Liste (im schlimmsten Fall). –

4

BTW, wenn Sie eine Vaadin Tabelle und haben Sie einen Filter angewendet, müssen Sie es vor entfernen, wenn nicht wahrscheinlich Sie eine Null-Zeiger-Ausnahme in der getContainerProperty (itemId, Eigentum) Methode

+0

Sein Recht. Filter lässt das Element nicht zu .addItem() 'gibt Ihnen eine' itemId' zurück, aber wenn Sie das beobachten, wird sich die Größe des Containers nicht ändern. Als Lösung können Sie 'removeContainerFilter' und dann' addItem' und dann 'addContainerFilter' erneut temporär löschen. –

Verwandte Themen