1

グアバ述語を Bean に注入したいのですが、これはnot内のequaltoである必要があります。

私はこれを試しました:

<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): Unexpected data after '.': 'not(!)'

春 3.0.5、グアバ 11.0.2

どうすればそれを機能させることができますか?

4

1 に答える 1

4

どうやら SpEL はあなたが Operator を意味するnotと考えています。ただし、ドキュメントでそれを回避または明確にする方法はありません。そのための機能リクエストを提出する必要があるかもしれません。

別の方法として、3.0 より前のファクトリ メソッドのアプローチを次に示します。それは恐ろしいことですが、あなたの場合は許容できる回避策かもしれません:

<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>
于 2012-11-15T14:29:46.473 に答える