Spring3开发实战 之 第八章:Spring3的表达式语言(5)

时间:2017-06-15 16:40

java代码:
查看复制到剪贴板打印
UserModel um1 = new UserModel(); 
um1.setUuid("u1"); 
um1.setName("u1Name"); 
UserModel um2 = new UserModel(); 
um2.setUuid("u2"); 
um2.setName("u2Name"); 
Map<String, UserModel> map = new HashMap<String, UserModel>(); 
map.put(um1.getUuid(),um1);    
map.put(um2.getUuid(),um2); 
//2.测试Map投影 
EvaluationContext context1 = new StandardEvaluationContext(); 
ExpressionParser parser = new SpelExpressionParser(); 
context1.setVariable("map", map); 
Collection<String> result1 = 
parser.parseExpression("#map.![#this.value.name]").getValue(context1, Collection.class); 

Spring3开发实战 之 第八章:Spring3的表达式语言

集合筛选
在SpEL指根据原集合通过条件表达式选择出满足条件的元素并构造为新的集合,SpEL使用“(list|map).?[选择表达式]”,其中选择表达式结果必须是boolean类型,如果true则选择的元素将添加到新集合中,false将不添加到新集合中。示例如下:
//1:准备测试数据的过程跟上一个示例一样,就不重复了
//2.测试集合或数组的筛选

java代码:
查看复制到剪贴板打印
EvaluationContext context1 = new StandardEvaluationContext(); 
ExpressionParser parser = new SpelExpressionParser(); 
context1.setVariable("collection", collection); 
Collection<String> result1 = 
parser.parseExpression("#collection.?[#this.uuid.equals('u1')]").getValue(context1, Collection.class); 
  
//测试Map筛选

java代码:
查看复制到剪贴板打印
EvaluationContext context1 = new StandardEvaluationContext(); 
ExpressionParser parser = new SpelExpressionParser(); 
context1.setVariable("map", map); 
Map<String,UserModel> result1 = 
parser.parseExpression("#map.?[#this.key=='u1']").getValue(context1, Map.class); 
nXml风格的配置
SpEL支持在Bean定义时使用,默认使用“#{SpEL表达式}”表示,不允许嵌套。其中“#root”根对象默认可以认为是ApplicationContext,获取根对象属性其实是获取容器中的Bean。
nXml风格的配置示例----通过SpEL表达式设置值

java代码:
查看复制到剪贴板打印
<bean id="numberGuess" class="org.spring.samples.NumberGuess"> 
<property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/> 
</bean> 
Xml风格的配置示例----通过SpEL表达式参照其他的Bean