关于Springboot项目中EL表达式解析工具类的实现
Posted 北溟溟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Springboot项目中EL表达式解析工具类的实现相关的知识,希望对你有一定的参考价值。
在springboot项目中可以使用EL表达式动态判断传参的合法性,这里我们提供一个工具类判断EL表达式是否成立的方法以供参考使用。
package com.yundi.atp.platform.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.expression.MapAccessor;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.common.TemplateParserContext;
import org.springframework.expression.spel.standard.SpelExpression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: yanp
* @Description: EL表达式工具类:解析EL表达式
* @Date: 2021/8/25 16:17
* @Version: 1.0.0
*/
@Slf4j
public class ElUtil {
/**
* @param express:el表达式
* @param map:el表达式动态参数
* @return
*/
public static boolean parse(String express, Map map) {
if (StringUtils.isBlank(express) || map.isEmpty()) {
log.info("参数不得为空!");
return false;
}
//创建一个EL解析器
ExpressionParser parser = new SpelExpressionParser();
TemplateParserContext templateParserContext = new TemplateParserContext("${", "}");
SpelExpression expression = (SpelExpression) parser.parseExpression(express, templateParserContext);
//设置动态参数
StandardEvaluationContext context = new StandardEvaluationContext();
MapAccessor propertyAccessor = new MapAccessor();
context.setVariables(map);
context.setPropertyAccessors(Arrays.asList(propertyAccessor));
expression.setEvaluationContext(context);
return expression.getValue(map, boolean.class);
}
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>(16);
map.put("exp", 4);
boolean result = parse("${exp>2}", map);
System.out.println("result:" + result);
}
}
以上是关于关于Springboot项目中EL表达式解析工具类的实现的主要内容,如果未能解决你的问题,请参考以下文章