vaadin,在尝试将项添加到sqlContainer时获取空指针

时间:2012-08-16 05:37:31

标签: java vaadin

我是vaadin(和java)的新手。

我有一个像这样的SQL容器的表:

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

          commit();
          setSelectable(true);

      }
    }

我有一个按钮和一个TextField,用于填充表格中的数据

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

我做错了什么?什么是空指针?

如果有任何不清楚的地方,请通知我。

请提前帮助,谢谢。

2 个答案:

答案 0 :(得分:4)

顺便说一句,如果你有一个Vaadin表并且你对它应用了一个Filter,你需要先删除它,如果不是你可能会在getContainerProperty(itemId,property)方法中得到一个空指针异常

答案 1 :(得分:2)

此表达式返回null

cont.getContainerProperty(itemId , "id")

然后您尝试在null上调用方法。这会导致NullPointerException。所以看一下,为什么容器在您调用它时不为键提供非空值。