(十七)自定义分隔符

        任何的表达式其组成之中一定会包含有相应的边界形式,例如:在jsp中的EL里面使用"${}",其中给定的"${"作为边界的开始,而"}"作为边界结束,而在Spring里面用户有需要也可以定义边界.首先来观察解析表达式的操作类: Expression parseExpression(String expressionString, ParserContext context) ;

        其中给定的是org.springframework.expression.ParserContext就是由用户自己来设置边界符的.提供有如下方法

    ●是否使用此模版:public boolean isTemplate();

    ●边界开始符号public String getExpressionPrefix();

    ●边界结束符号public String getExpressionSuffix;

范例:定义自定义表达式边界

package cn.zwb.demo;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.ParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class TestELSimple {
	public static void main(String[] args) {
		//1.定义要操作的表达式,使用者更多多的是关注此部分,而不关注具体的解析处理部分,
		String pstr="#[1 + 2]";
		//2.要定义一个表达式的解析器,本次使用的是spel表达式解析器;
		ExpressionParser parpser = new SpelExpressionParser();
		//3.使用特定的解析器来处理指定的字符串操作;
		Expression exp = parpser.parseExpression(pstr,new ParserContext() {
			@Override
			public boolean isTemplate() {
				return true;
			}
			@Override
			public String getExpressionSuffix() {
				return "]";
			}
			@Override
			public String getExpressionPrefix() {
				// TODO Auto-generated method stub
				return "#[";
			}
		});
		//定义相关的一些环境属性,
		EvaluationContext context=new StandardEvaluationContext();
		System.out.println(exp.getValue(context));
	}
}

        此时在进行表达式解析的过程之中,所出现的边界都会自动的忽略掉;




猜你喜欢

转载自blog.csdn.net/qq1019648709/article/details/80500560
今日推荐