我想扩展并注册我自己的函数,详细信息如下:
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/