6

मेरे पास मेरे वेब एप्लिकेशन के लिए पूरी तरह से कॉन्फ़िगर किया गया है। (PRE/POST एनोटेशन सक्षम के साथ)।SpelEvaluationException: EL1007E: (pos 43): फ़ील्ड या प्रॉपर्टी 'समूह' शून्य पर नहीं मिल सकता है

हालांकि हाल ही में मुझे उनके साथ एक अजीब समस्या का सामना करना पड़ा। सारांश इस प्रकार है: विधि पर POJOs

की
// User Class 
public class User { 
    int id; 
    String name; 
    // getters and setters 
} 

// Group Class 
public class Group { 
    int id; 
    String name; 
    // getters and setters 
} 

// GroupMembership class 
public class GroupMembership { 
    private int id; 
    private User user; 
    private Group group; 
    // getters and setters 
} 
  • PreAuthorise फिल्टर

    1. सारांश।

      @PreAuthorize("canIEditGroupProfile(#membership.group.id)") 
      public int updateGroupMembership(GroupMembership membership) 
          throws GroupsServiceException; 
      

    एक पूरी तरह से आबादी GroupMembership वस्तु (उचित उपयोगकर्ता और समूह रचनाओं से अब तक) गुजर पर, सुरक्षा फिल्टर निम्नलिखित थ्रो अपवाद:

    errorMessage: "Failed to evaluate expression 
        canIEditGroupProfile(#membership.group.id)'" 
    

    अपवाद की खुदाई करने पर:

    कारण यह पाया गया है:

    org.springframework.expression.spel.SpelEvaluationException: 
        EL1007E:(pos 33): Field or property 'group' cannot be found on null 
    

    कृपया इसे संबोधित करने के लिए पॉइंटर्स प्रदान करें।

  • +0

    चेकटर/गेटर की जांच करें और सुनिश्चित करें कि वे सही हैं – xyz

    +1

    या तो 'शून्य' तर्क के रूप में पारित किया गया है या कोड डीबग जानकारी के बिना संकलित किया गया है। – zeroflagL

    उत्तर

    4

    गेटर/सेटर्स ठीक लगता है ... null का कोई भी मामला नहीं है।

    हालांकि एक दिलचस्प अवलोकन;

    @PreAuthorize("canIEditGroupProfile(#membership.group.id)") 
    public int updateGroupMembership(GroupMembership membership) 
        throws GroupsServiceException; 
    

    यह ठीक काम करता है:

    @PreAuthorize("canIEditGroupProfile(#groupmembership.group.id)") 
    public int updateGroupMembership(GroupMembership groupmembership) 
        throws GroupsServiceException; 
    

    इसके अलावा मैंने देखा, पैरामीटर नाम पहले (यानी सेवा और ServiceImpl दोनों पड़ा विभिन्न पैरामीटर नाम) के मामले में mismatching गया था यह एक मुझे एक त्रुटि देता है।

    अब समानता बनाए रखना, समस्या ठीक हो रही है।

    0

    जैसा कि @zeroflagL ने पूछा: क्या आप डीबग जानकारी के बिना संकलित कर रहे हैं? यह spring @Cacheable with Ehcache, spel find null for valid object और Spring @Cacheable with SpEL key: always evaluates to null के समान समस्या है - maven-compiler-plugin में <debug>false</debug> उदाहरण के लिए, अपनी डीबग कॉन्फ़िगरेशन के लिए अपनी पीओएम (या एक्लिप्स कॉन्फ़िगरेशन या जो भी) देखें।

    0

    मुझे अपने स्प्रिंग बूट एप्लिकेशन में एक ही समस्या मिली। यह पता चला कि मैं अपने डीबग प्रतीकों की जानकारी के बिना संकलित कर रहा था, क्योंकि ऊपर उल्लिखित टिप्पणी में इसका उल्लेख है।

    1. (मेरा पसंदीदा एक):: मैं ने टिप्पणी दी कि मैं दो तरीकों से इस मुद्दे को ठीक कर सकता है चाहते हैं बस अपने pom.xml में यह शामिल -> प्लगइन्स

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <compilerArgument>-parameters</compilerArgument> 
         <testCompilerArgument>-parameters</testCompilerArgument> 
        </configuration> 
    </plugin> 
    
    1. यदि आप जावा 1.8 और ग्रहण आईडीई के रूप में उपयोग कर रहे हैं, तो अपने प्रोजेक्ट प्रॉपर्टीज -> जावा कंपाइल -> जांचें "विधि पैरामीटर (प्रतिबिंब के माध्यम से प्रयोग योग्य) के बारे में स्टोर जानकारी" पर जाएं।

    मुझे इस मुद्दे के बारे में और जानने के लिए वास्तव में दिलचस्प this link मिला।

    उम्मीद है कि यह मदद करता है!

    संबंधित मुद्दे