2012-08-16 8 views
5

पर आइटम जोड़ने का प्रयास करते समय शून्य सूचक प्राप्त करना मैं vadin (और जावा) के लिए बहुत नया हूँ।vadin, sqlContainer

मैं एक मेज इसलिए की तरह एक SQLcontainer है कि है:

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

यह अभिव्यक्ति देता है null:

cont.getContainerProperty(itemId , "id") 

और फिर आप null पर एक विधि को लागू करने की कोशिश करते हैं। यह NullPointerException का कारण बनता है। तो एक नज़र डालें, क्यों कंटेनर उस समय कुंजी के लिए गैर-शून्य मान प्रदान नहीं करता है जब आप इसे आमंत्रित करते हैं।

+0

कंटेनर में एक नल पॉइंटर एक्सेप्शन मिल जाएगा की जरूरत है .getContainerPropertyIds भी शून्य सूचक मुद्दा है। :(मुझे कोई सुराग नहीं है कि वह क्या हो रहा है या नहीं। हालांकि आइटम आइटम शून्य नहीं है, (इसे चेक किया गया है) –

+2

कंटेनर में आइटम "itemId" * या * ऑब्जेक्ट "itemId" नहीं है टी 'संपत्ति' आईडी नहीं है। यह 'शून्य' वापस करने का नियम है। 'getContainerPropertyIds' को वापस नहीं करना चाहिए, लेकिन एक खाली सूची (सबसे बुरी स्थिति में)। –

4

Btw, अगर आप एक Vaadin टेबल है और आप इसे करने के लिए एक फिल्टर लागू है, इससे पहले कि आप इसे हटाने के लिए, नहीं तो शायद आप getContainerProperty (Itemid, संपत्ति) विधि

+0

इसका अधिकार। फ़िल्टर आइटम को जोड़ने की अनुमति नहीं देगा। हालांकि 'कंटेनर .addItem() 'आपको' itemId' वापस कर देगा, लेकिन वास्तव में यदि आप देखते हैं, तो कंटेनर का आकार नहीं बदलेगा। समाधान के रूप में आप अस्थायी रूप से 'कोटेनरफिल्टर' हटा सकते हैं और फिर 'addItem' और फिर' addContainerFilter' को फिर से हटा सकते हैं। –