IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    第一章 EL表达式常见用法

    summer发表于 2016-07-01 12:43:12
    love 0

    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。



沪ICP备19023445号-2号
友情链接