QLExpress规则表达式--导入类路径

QLExpress规则表达式–导入类路径

最近刚接触到QLExpress组件,通过学习接触到很多规则表达式,下面简单分析一下如何用QLExpress脚本语言类路径的导入。请看下面详细的代码:

public class ImportClassPathTest {
    @Test
    public void test() {
        ExpressRunner runner = new ExpressRunner();
        String exp = "return new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").format(new Date())";
        IExpressContext<String, Object> context = new DefaultContext<>();
        Object result;
        try {
            result = runner.execute(exp, context, null, false, false);
            System.out.println(result);
        } catch (Exception e) {
            System.out.println("SimpleDateFormat 没有定义,此处应该报错");
            Assert.assertTrue(true);
            return;
        }
        Assert.fail();
    }

这个例子没有导入类路径,很明显会报错,可以看到下面的测试结果:

再举两个成功的例子,代码如下:

@Test
    public void test2() throws Exception {
        ExpressRunner runner = new ExpressRunner();
        String exp = "return new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").format(new Date())";
        IExpressContext<String, Object> context = new DefaultContext<>();
        Object result;
        result = runner.execute(exp, context, null, false, false);
        System.out.println(result);
    }

    @Test
    public void test3() throws Exception {
        ExpressRunner runner = new ExpressRunner();
        String exp = ""
            + "import java.text.SimpleDateFormat; "
            + "return new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").format(new Date())";
        IExpressContext<String, Object> context = new DefaultContext<>();
        Object result;
        result = runner.execute(exp, context, null, false, false);
        System.out.println(result);
    }
}

这两个例子通过两种不同的方式导入类路径,测试结果如下:
test2:

test3:
两种不同导入类路径的方法成功通过编译。


版权声明:本文为wsgodlike原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。