복붙노트

[SPRING] SpelEvaluationException : EL1007E : (pos 43) : 'group'필드 또는 속성을 null에서 찾을 수 없습니다.

SPRING

SpelEvaluationException : EL1007E : (pos 43) : 'group'필드 또는 속성을 null에서 찾을 수 없습니다.

내 웹 응용 프로그램에 대해 완전히 SPRING METHOD 보안을 구성했습니다. (PRE / POST 어노테이션 사용).

그러나 최근에는 그들과 이상한 문제가 발생했습니다. 요약은 다음과 같습니다.

완전히 채워진 GroupMembership 개체 (적절한 사용자 및 그룹 구성이 있음)를 전달하면 보안 필터가 다음 예외를 throw합니다.

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

같은 문제를 해결하기위한 지침을 제공하십시오.

해결법

  1. ==============================

    1.getter / setters는 괜찮아 보인다 ... null도 없다.

    getter / setters는 괜찮아 보인다 ... 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;
    

    또한 처음에는 매개 변수 이름이 일치하지 않습니다 (즉, Service 및 ServiceImpl 둘 다 다른 매개 변수 이름을 가짐).

    이제 일관성을 유지하면서 문제는 해결 된 것 같습니다.

  2. ==============================

    2.스프링 부트 애플리케이션에서 같은 문제가 발생했습니다. 위의 설명에서 언급했듯이 디버그 기호 정보없이 컴파일하고있는 것으로 나타났습니다. 나는이 문제를 두 가지 방법으로 해결할 수 있다고 말하고 싶다.

    스프링 부트 애플리케이션에서 같은 문제가 발생했습니다. 위의 설명에서 언급했듯이 디버그 기호 정보없이 컴파일하고있는 것으로 나타났습니다. 나는이 문제를 두 가지 방법으로 해결할 수 있다고 말하고 싶다.

    1. (내가 제일 좋아하는) : 단지 이것을 pom.xml -> 플러그인에 포함하십시오.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
           <compilerArgument>-parameters</compilerArgument>
           <testCompilerArgument>-parameters</testCompilerArgument>
        </configuration>
    </plugin>
    

    나는이 문제에 대해 더 많이 알기 위해이 링크를 정말 흥미롭게 발견했다.

    희망이 도움이됩니다!

  3. ==============================

    3.@zeroflagL Ask : 디버그 정보없이 컴파일하고 있습니까? 이것은 Spring @ Cacheable with Ehcache와 같은 문제 일 가능성이 높습니다. spel은 유효한 객체에 대해 null을 찾고 SpEL 키로 Spring @Cacheable을 찾습니다. 항상 null로 평가됩니다. 디버그 구성에 대해 POM (또는 Eclipse 구성 또는 무엇이든)을 확인하십시오. 예 : debug> false 를 maven-compiler-plugin에 추가하십시오.

    @zeroflagL Ask : 디버그 정보없이 컴파일하고 있습니까? 이것은 Spring @ Cacheable with Ehcache와 같은 문제 일 가능성이 높습니다. spel은 유효한 객체에 대해 null을 찾고 SpEL 키로 Spring @Cacheable을 찾습니다. 항상 null로 평가됩니다. 디버그 구성에 대해 POM (또는 Eclipse 구성 또는 무엇이든)을 확인하십시오. 예 : debug> false 를 maven-compiler-plugin에 추가하십시오.

  4. from https://stackoverflow.com/questions/22959459/spelevaluationexception-el1007epos-43-field-or-property-group-cannot-be-f by cc-by-sa and MIT license