你的位置:首页 > Java教程

[Java教程]第一章 EL表达式常见用法


el最常用的几种使用场景:

  • 从配置文件中读取属性
  • 缺失值情况下,配置默认值
  • el内部字符串使用String的方法
  • 三目运算符
  • 正则表达式
  • 注入系统属性(system properties)
  • 调用系统原有函数
  • 直接注入文件进行操作
  • 读取另一个bean的函数的返回值

1、从配置文件中读取属性

application.properties

name=\u8D75\u8BA1\u521A

1   @Value("${name}")//这里必须使用$,使用#是不行的2   private String name;3   @RequestMapping(value = "/name", method = RequestMethod.GET)4   public String getName() {5     return name;6   }

注意:${}读取最后一个满足条件的值;#{}读取所有满足条件的值

2、缺失值情况下,配置默认值

1   @Value("${name2:'刚子'}")//这里必须使用$,使用#是不行的2   private String name2;3   @RequestMapping(value = "/name2", method = RequestMethod.GET)4   public String getName2() {5     return name2;6   }

3、el内部字符串使用String的方法

1 name.list=\u8D75\u8BA1\u521A,\u738B\u5A1C

1   @Value("#{'${name.list}'.split(',')}")2   private List<String> nameList;3   @RequestMapping(value = "/nameList", method = RequestMethod.GET)4   public List<String> getNameList() {5     return nameList;6   }

4、三目运算符

1 name.three=\u6768\u8FC7

1   @RequestMapping(value = "/nameThree", method = RequestMethod.GET)2   public String getNameThree(@Value("${name.three!='杨过'?'黄蓉':'小龙女'}") String nameThree) {3     return nameThree;4   }

注意:@value可以直接作为入参

5、正则表达式

1   @Value("#{'100' matches '\\d+'}")//这里必须使用#,使用$是不行的2   private boolean isDigital;3   @RequestMapping(value = "/nameRegEx", method = RequestMethod.GET)4   public boolean getNameRegEx() {5     return isDigital;6   }

6、注入系统属性

1   @Value("#{systemProperties['os.name']}")//这里必须使用#,使用$是不行的2   private String osName;3   @RequestMapping(value = "/osName", method = RequestMethod.GET)4   public String getOsName() {5     return osName;6   }

7、调用系统原有函数

1   @Value("#{T(java.lang.Math).random() * 10}")//注意:这里只生成一次,之后你无论调用多少次getRandomValue(),都返回同一个值2   private String randomValue;3   @RequestMapping(value = "/randomValue", method = RequestMethod.GET)4   public String getRandomValue() {5     return randomValue;6   }

8、直接注入文件进行操作

testfile/testEl.txt

1 乔峰--降龙十八掌2 杨过--黯然销魂掌

 1   @Value("classpath:testfile/testEl.txt") 2   private Resource txtResource; 3   @RequestMapping(value = "/resource", method = RequestMethod.GET) 4   public String getResource() { 5     try { 6       return IOUtils.toString(txtResource.getInputStream(), "UTF-8"); 7     } catch (IOException e) { 8       ExceptionUtils.getStackTrace(e); 9     }10     return StringUtils.EMPTY;11   }

注意:这个很重要,操作文件使用Apache.commons.io.IOUtils来操作。

9、读取另一个bean的函数的返回值

1 @Component("eLComponent")2 public class ELComponent {3   public String getNameBean(){4     return "乔峰";5   }6 }

1   @Value("#{eLComponent.getNameBean()}")//这里必须使用#,使用$是不行的2   private String nameBean;3   @RequestMapping(value = "/nameBean", method = RequestMethod.GET)4   public String getNameBean() {5     return nameBean;6   }

注意:被调用bean最好指定一下beanName。