使用SpEL

时间:2015-06-01 15:04:34

标签: spring spring-el

我们有一个包含如下配置的地图。

Class Config {
     Map<String, Boolean> enabled = new LinkedHashMap<String, Boolean> ();

从Spring Cloud Config Server填充配置POJO对象。

Key值是根据用户现在正在访问的功能而获得的。它将具有键值,例如{&#39;默认&#39;:true,&#39; login&#39;:false,&# 39;仪表盘&#39;:真正}     }

在我的Servlet过滤器中,我想获取给定密钥的值(基于用户访问功能),如果密钥不存在,我想采用&#39;默认&#39;值。

我可以使用map.get来编写一个三元运算符来实现这一点但是,我可以使用SpEL(Spring Expression Language)来做同样的事情吗?

boolean isEnabled = configuration.getEnabled().get(api) == null ? configuration.getEnabled().get("default") : configuration.getEnabled().get(api);

1 个答案:

答案 0 :(得分:1)

你所要求的并不完全清楚但是......

"['foo']?:['default']"

...如果地图包含密钥foo,则返回其值,否则返回default的值。

(这假定地图是评估的#root对象。)

请参阅Elvis Operator