2012-11-15 6 views
1

Predicate을 내 not 내 콩에 주입하고 싶습니다. Spring 설정 파일의 Spring Expression Language에서 정적 메소드 호출을 중첩하는 방법은 무엇입니까?

는 I이 시도 :

<bean id="bla" class="something"> 
    <property name="indexPredicate" value="#{T(com.google.common.base.Predicates).not(T(com.google.common.base.Predicates).equalTo(145028))}" /> 
</bean> 

을하지만 예외 발생 : org.springframework.expression.spel.SpelParseException :

에 의한 EL1049E : POS (36)의 데이터 이후 예기치 '.': '(!)하지'

봄 3.0.5, 구아바 11.0.2

어떻게 작동합니까?

답변

4

분명히 SpEL은 the Operator not을 의미한다고 생각합니다. 그러나 문서에서이를 벗어나거나 구별 할 수있는 방법은 없습니다. 아마도 기능 요청을 제출해야합니다.

또는 3.0 이전 버전의 factory-method 방식이 있습니다. 내가 알고, 끔찍하지만 귀하의 경우 수용 가능한 해결 방법이 될 수 있습니다

<property name="indexPredicate"> 
    <bean class="com.google.common.base.Predicates" factory-method="not"> 
     <constructor-arg> 
      <bean class="com.google.common.base.Predicates" 
        factory-method="equalTo"> 
       <constructor-arg> 
        <bean class="java.lang.Integer" factory-method="valueOf"> 
         <constructor-arg value="145028" /> 
        </bean> 
       </constructor-arg> 
      </bean> 
     </constructor-arg> 
    </bean> 
</property> 
+1

https://jira.springsource.org/browse/SPR-9992. 답변 해주셔서 감사합니다. 잘 작동합니다. –