2012-08-16 3 views
5

私は非常にvaadin(およびjava)を新しくしました。vaadin、sqlContainerに項目を追加しようとしたときにnullポインタを取得する

私はそうのようなSQLcontainer持つテーブルがあります。

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

      commit(); 
      setSelectable(true); 

     } 
    } 

私は、テーブル内のデータを埋めるために、ボタンやTextFieldを、持っているが、私は「NULLポインタを得続ける

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(); 
     } 

例外 "私が何をするに関係なく。行** cont.getContainerProperty(itemId、 "id")。setValue(dataResult);

私は何か間違っていますか? nullポインタとは何ですか?

不明な点がある場合はお知らせください。

ご協力ありがとうございます。

答えて

2

この式はnullを返します。その後、

cont.getContainerProperty(itemId , "id") 

そして、あなたはnull上のメソッドを呼び出すためにしてみてください。これにより、NullPointerExceptionが発生します。だから、なぜコンテナは、あなたがそれを呼び出すときにキーのためのnull以外の値を提供していない外観を持っています。あなたがVaadin表を持っていて、それにフィルターを適用した場合

+0

コンテナにnullポインタ例外が発生しますされていない場合、前にそれを削除する必要があります.getContainerPropertyIdsにもポインタの問題があります。しかし、私は何もしていませんが、なぜそれが起こっているのか、何が起こっているのか何かを知っていませんが、itemIdはnullではありません(チェックした) –

+2

コンテナにはitemIdという項目が含まれていません。*または* itemIdは、 'getContainerPropertyIds'はnullを返しますが、最悪の場合は空のリストを返すべきではありません。 –

4

ところで、あなたはおそらく、あなたがgetContainerProperty(のitemId、プロパティ)メソッド

+0

その権利。フィルタは項目を追加することを許可しません。 .addItem() 'は' itemId'を返しますが、実際に見てもコンテナのサイズは変更されません。解決策としては、一時的に 'removeContainerFilter'を実行してから' addItem'を実行してから 'addContainerFilter'を再度実行してください。 –

関連する問題