4.3.10 변수 by ks
variableName 신택스를 사용해서 표현할 수 있는 변수를 참조할수 있다. 변수는 EvaluationContext 확장체에서 setVariable 메소드를 사용해서 세팅한다. 아래는 어떻게 변수를 사용하는 지를 보여준다.
@SuppressWarnings("unused")
public class Inventor
Inventor tesla = new Inventor("Nikola Tesla", "Serbian"); EvaluationContext context = SimpleEvaluationContext.forReadWriteDataBinding().build(); context.setVariable("newName", "Mike Tesla"); parser.parseExpression("Name = #newName").getValue(context, tesla); System.out.println(tesla.getName()) // "Mike Tesla"
this와 #root 변수
this 변수는 항상 정의되어 있으며 현재 평가 개체 (규정되지 않은 참조가 해결됨)를 참조한다. #root 변수는 항상 정의되고 root context 오브젝트를 참조한다. 비록 #this가 표현 컴포넌트가 평가되기떄 문에 다양할 수 있지만 #root는 항상 root를 참조한다. 아래는 어떻게 #this와 #root를 사용하는지를 보여준다.
// create an array of integers
List<Integer> primes = new ArrayList<Integer>();
primes.addAll(Arrays.asList(2,3,5,7,11,13,17));
// create parser and set variable 'primes' as the array of integers
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataAccess();
context.setVariable("primes", primes);
// all prime numbers > 10 from the list (using selection ?{...})
// evaluates to [11, 13, 17]
List<Integer> primesGreaterThanTen = (List<Integer>) parser.parseExpression(
"#primes.?[#this>10]").getValue(context);
Last updated
Was this helpful?