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): '.' 之后的意外数据:'not(!)'

春天 3.0.5,番石榴 11.0.2

我怎样才能让它工作?

4

1 回答 1

4

显然 SpEL 认为你的意思是 Operatornot。但是,我在文档中看不到任何逃避或消除歧义的方法。也许您需要为此提交功能请求。

或者,这里是 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 回答