java - xml 文件中的 Spring 表达式语言扩展

标签 java spring spring-el

我想扩展并注册我自己的函数,详细信息如下:

http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html请参阅第 6.5.11 节“函数”。

但是,我希望在 spring xml 文件中使用此表达式,而不是在页面中显示的代码中使用。

如何在解析 xml 文件时获取对 spring 使用的“StandardEvaluationContext”对象的引用?如果没有那个 spring 就找不到我注册的函数。

谢谢

亚尔

最佳答案

类似这样的事情应该可以帮助您开始:

public class FunctionRegistrationBean implements BeanFactoryAware{

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        if (beanFactory instanceof ConfigurableBeanFactory) {
            ConfigurableBeanFactory cbf = (ConfigurableBeanFactory) beanFactory;
            cbf.setBeanExpressionResolver(new StandardBeanExpressionResolver(){
                @Override
                protected void customizeEvaluationContext(
                        StandardEvaluationContext evalContext) {
                    evalContext.registerFunction("someName", someMethod);
                    evalContext.registerFunction("someOtherName", someOtherMethod);
                }
            });
        }

    }

}

只需在您的应用程序上下文中注册此 bean。

关于java - xml 文件中的 Spring 表达式语言扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971443/

相关文章:

java - 缓冲读取器的标记化问题

java - 此标记后预期的表达式

Java表达式语言投影集合中的每个元素获取其他类型的新对象

java - Spring FactoryBean 可以访问上下文中的所有属性吗?

java - SpEL - 错误 : Method cannot be found on type

spring - SpEL 无法处理 'é' ?

java - 如何在java中为两个类实现一个泛型方法

java - 伪 "lock"对象可以在 Amazon S3 API 中使用吗?

java - Spring Data JDBC 是否支持实体之间的连接?

ruby-on-rails - 尝试执行 rails 命令时与 spring 相关的错误