import javax.el.*;
public class ExpressionLanguageExample {
public static void main(String[] args) {
ExpressionFactory factory = ExpressionFactory.newInstance();
ValueExpression expression = factory.createValueExpression(
new ELContextImpl(), "${num1 + num2}", int.class);
ELContextImpl context = (ELContextImpl) expression.getELContext();
context.setVariable("num1", factory.createValueExpression(
context, "${5}", int.class));
context.setVariable("num2", factory.createValueExpression(
context, "${10}", int.class));
int result = (int) expression.getValue(context);
}
}
class ELContextImpl extends ELContext {
private final VariableMapper variableMapper;
public ELContextImpl() {
this.variableMapper = new VariableMapperImpl();
}
@Override
public VariableMapper getVariableMapper() {
return variableMapper;
}
}
class VariableMapperImpl extends VariableMapper {
private final Map<String, ValueExpression> variables = new HashMap<>();
public ValueExpression resolveVariable(String variable) {
return variables.get(variable);
}
public ValueExpression setVariable(String variable, ValueExpression expression) {
return variables.put(variable, expression);
}
}