Spring 自定义分隔符

版权声明:转载请随意! https://blog.csdn.net/qq_41723615/article/details/89181428

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

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

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

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

    ●边界结束符号:public String getExpressionSuffix;

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

package com.jcn.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));
	 }
}

输出结果:3

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

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/89181428
今日推荐