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