Java-Apache Commons Jexl3-動態表達式判斷


  <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl3 -->
  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-jexl3</artifactId>
    <version>3.1</version>
  </dependency>
    /**
     * Jexl表達式計算
     */
    @Test
    public void jexlUseFun() {
        // 初始化Jexl構造器
        JexlBuilder jexlBuilder = new JexlBuilder();
        // 創建Jexl表達式引擎
        JexlEngine jexlEngine = jexlBuilder.create();
        // 創建Jexl表達式解析器
        JexlScript jexlScript = jexlEngine.createScript("if(tem>=25){grade=1;gradeName='有災害';}else{grade=0;gradeName='無災害';}");
        // 創建Jexl表達式變量上下文
        JexlContext jexlContext = new MapContext();
        jexlContext.set("tem", 15);
        // 執行Jexl表達式,得到結果
        jexlScript.execute(jexlContext);
        System.out.println(jexlContext.get("grade"));
        System.out.println(jexlContext.get("gradeName"));
    }
注意:Jexl引擎能夠創建兩種解析器,其中JexlExpression不能使用 if、for、while 語句塊。
  正確:JexlScript jexlScript = jexlEngine.createScript("if(tem>=25){grade=1;gradeName='有災害';}else{grade=0;gradeName='無災害';}");   錯誤:JexlExpression jexlExpression = jexlEngine.createExpression("{if(tem>=25){grade=1;gradeName='有災害';}else{grade=0;gradeName='無災害';}}");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM