Spring EL式解析

5149 ワード

単一オブジェクトの注入
/**
*       
*
* @param expr #{user.id}.#{user.name}.#{user.tel}
* @param data
* @return
*/
public static String readExpr(String expr, Object data) {
    ExpressionParser parser = new SpelExpressionParser();
    Expression expression = parser.parseExpression(expr, new TemplateParserContext());
    return expression.getValue(data, String.class);
}

複数の変数を入力
/**
*       
*
* @param expr #{#shopId}.#{#typeId}.#{#paging.page}
* @param map
* @return
*/
public static String readExpr(String expr, Map<String, Object> map) {
 
    ExpressionParser parser = new SpelExpressionParser();
    Expression expression = parser.parseExpression(expr, new TemplateParserContext());
 
    EvaluationContext context = new StandardEvaluationContext();
 
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        context.setVariable(entry.getKey(), entry.getValue());
    }
 
    return expression.getValue(context, String.class);
}