23.2.9 构造List
在SpEl中可以使用“{e1,e2,e3}”的形式来构造一个List,如下示例中我们就构造了一个List。
@Test
public void test09() {
ExpressionParser parser = new SpelExpressionParser();
List<Integer> intList = (List<Integer>)parser.parseExpression("{1,2,3,4,5,6}").getValue();
int index = 0;
for (Integer i : intList) {
Assert.assertTrue(i == ++index);
}
}
如果我们希望构造的List的元素还是一个List,则可以将构造的List的元素定义为“{e1,e2,e3}”这样的形式,如“{ {1,2},{3,4,5},{6,7,8,9}}”。
@Test
public void test09_1() {
ExpressionParser parser = new SpelExpressionParser();
List<List<Integer>> list = (List<List<Integer>>)parser.parseExpression("{
{1,2},{3,4,5},{6,7,8,9}}").getValue();
int index = 0;
for (List<Integer> intList : list) {
for (Integer i : intList) {
Assert.assertTrue(i == ++index);
}
}
}
如果需要构造一个空的List,则直接将对应的表达式字符串定义为“{}”即可。
23.2.10 构造Map
我们知道Map是可以key-value的形式存在的,在SpEl中如果我们需要构造一个Map则可以使用“{key1:value1,key2:value2}”这样的形式进行定义,即使用大括号包起来,然后key和value之间以冒号“:”分隔构成一个Entry,多个Entry之间以逗号分隔。如下示例中我们就构建了一个key为String,value为Long类型的Map。
@Test
public void test10() {
ExpressionParser parser = new SpelExpressionParser();
Map<String, Long> map = (Map<String, Long>)parser.parseExpression("{'key1':1L,'key2':2L}").getValue();
Assert.assertTrue(map.get("key1").equals(1L));
Assert.assertTrue(map.get("key2").equals(2L));
}
如果需要构造一个空的Map,则只需指定对应的表达式为“{:}”即可。
@Test
public void test10_1() {
ExpressionParser parser = new SpelExpressionParser();
Map<String, Long> map = (Map<String, Long>)parser.parseExpression(