zoukankan      html  css  js  c++  java
  • 第一章 EL表达式常见用法

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

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

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

    application.properties

    name=u8D75u8BA1u521A
    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=u8D75u8BA1u521A,u738Bu5A1C
    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=u6768u8FC7
    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。

  • 相关阅读:
    [转载]试着解析宾得为何不出全幅
    [转载]试着解析宾得为何不出全幅
    [转载]从KX、KR用户的购镜选择谈到K5和其他
    [转载]从KX、KR用户的购镜选择谈到K5和其他
    pdf工具的使用
    Xshell 添加快速命令使用
    linux remove和 rename函数使用
    linear correlation coefficient|Correlation and Causation|lurking variables
    SST|SSR|SSE| r 2|与Sx x &Sx y & Syy的关系|
    the least-squares criterion|Sxx|Sxy|Syy|Regression Equation|Outliers|Influential Observations|curvilinear regression|linear regression
  • 原文地址:https://www.cnblogs.com/java-zhao/p/5633881.html
Copyright © 2011-2022 走看看