最近遇到一个很磨人的需求,需要在jsp里面中动态调用后台函数,动态赋值;也可以通过自定义函数库和标签库达到目的,这里介绍另外一种方法,使用spel
Spring3中引入了Spring表达式语言SpringEL,SpEL是一种强大,简洁的装配Bean的方式,他可以通过运行期间执行的表达式将值装配到我们的属性或构造函数当中,更可以调用JDK中提供的静态常量,获取外部Properties文件中的的配置,可以支持页面、json文件、Properties文件等中使用el表达式的方式动态赋值,非常方便
我在网上也搜了一些相关的文章,几乎没有看到讲实际用法的,都是一些千篇一律的小demo,特此记录一下,希望能帮助大家更好的理解SpringEl的用法
以下为主体类,需要在spel自己的上下文StandardEvaluationContext 中定义我们需求在页面调用的函数,并把它注册到spel中,如这里注册了2个函数getVal1和getVal2
@Service
public class SpelService {
private static final Log log = LogFactory.getLog(SpelService.class);
/**
* 替换el表达式
*
* @param config
* @param variables
*/
public Map replaceSpringEl(Map config, Map<String, Object> variables) {
Map configData = new HashMap(config);
StandardEvaluationContext context = new