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:
两种不同导入类路径的方法成功通过编译。