精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-05
Version2.1的变更:
新增org.wltea.expression.ExpressionEvaluator. preparedCompile(String expression , Collection<Variable> variables)方法和类org.wltea.expression.PreparedExpression用来支持表达式预编译。用户可以像处理SQL语句那样,对需要循环执行的相同表达式进行预编译处理,而后设置不同的执行参数,得到不同的计算结果。详见”API说明”. /** * Hello World Example * @param args */ public static void main(String[] args){ if(args.length == 0){ args = new String[1]; args[0] = "IK Expression V2.0.5"; } //定义表达式 String expression = "\"Hello \" + 版本"; //给表达式中的变量 [版本] 付上下文的值 List<Variable> variables = new ArrayList<Variable>(); variables.add(Variable.createVariable("版本", args[0])); //预编译表达式 PreparedExpression pe = ExpressionEvaluator.preparedCompile(expression, variables); //执行表达式 Object result = pe.execute(); System.out.println("Result = " + result); //更改参数,再次执行预编译式 pe.setArgument("版本", "IK Expression V2.0.6"); result = pe.execute(); System.out.println("Result = " + result); } 修订了对声明为Object类型的参数传入Integer、Double、String等类型的值时,会抛出类型不匹配异常的问题。原来版本中,参数必须显式申明为DATATYPE_OBJECT类型,新版本则不需要,所有java类型默认继承于Object。 修改了ExpressionEvaluator的两个compile方法,不再抛出IllegalExpressionException异常,而改为运行期异常,以简化用户编码。 下载地址: IKExpressionV2.1.0完整压缩包 IKExpressoin简易表达式引擎V2.1.0使用说明.pdf google code开源地址:http://code.google.com/p/ik-expression/ 更多详细请参阅RAR包内的《IKExpressoin简易表达式引擎V2.1.0使用说明.doc》文档 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-14
还是会出现类似问题啊?
函数参数类型不匹配,函数类型为:java.lang.Object 传入参数类型为:double |
|
返回顶楼 | |
发表时间:2009-09-14
dongfengpo25 写道 还是会出现类似问题啊?
函数参数类型不匹配,函数类型为:java.lang.Object 传入参数类型为:double 能说的细一些嘛? 又或者是你版本下的不对? |
|
返回顶楼 | |
发表时间:2009-09-15
版本是2.1的,然后定义一个函数,参数为OBJECT,传值类型为0.0,就报出错误,如上.
|
|
返回顶楼 | |
发表时间:2009-09-15
最后修改:2009-09-15
dongfengpo25 写道 版本是2.1的,然后定义一个函数,参数为OBJECT,传值类型为0.0,就报出错误,如上.
兄弟,给点代码和配置好伐?你这么说跟没说有啥区别啊 本人测试一下代码,没有你说的问题啊! /** * Hello World Example * @param args */ public static void main(String[] args){ //定义表达式 String expression = "$问好(数字类型)"; //给表达式中的变量 [用户名] 付上下文的值 List<Variable> variables = new ArrayList<Variable>(); variables.add(new Variable("数字类型" , DataType.DATATYPE_OBJECT , new Integer(0))); //执行表达式 PreparedExpression pe = ExpressionEvaluator.preparedCompile(expression, variables); System.out.println("Result = " + pe.execute()); pe.setArgument("数字类型", new Float(100)); System.out.println("Result = " + pe.execute()); pe.setArgument("数字类型", new Double(100)); System.out.println("Result = " + pe.execute()); Object result = null; result = ExpressionEvaluator.evaluate("$问好(1.0)"); System.out.println("Result = " + result); result = ExpressionEvaluator.evaluate("$问好(1)"); System.out.println("Result = " + result); } <bean class="org.wltea.expression.test.TestFunctions"> <function name="问好" method="sayHello"> <parameter-type>java.lang.Object</parameter-type> </function> </bean> |
|
返回顶楼 | |
发表时间:2009-09-15
例如:
定义: ... Max(Object a,Object b).... 替换: Max() --- $Max 配置: <function name="MaxEx" method="MaxEx"> <parameter-type>java.lang.Object</parameter-type> <parameter-type>java.lang.Object</parameter-type> </function> 调用: Max(1000,0.0) 这样子应该可以了吧 |
|
返回顶楼 | |
发表时间:2009-09-15
dongfengpo25 写道 例如:
定义: ... Max(Object a,Object b).... 替换: Max() --- $Max 配置: <function name="MaxEx" method="MaxEx"> <parameter-type>java.lang.Object</parameter-type> <parameter-type>java.lang.Object</parameter-type> </function> 调用: Max(1000,0.0) 这样子应该可以了吧 这个应该可以啊,要不你试试我上面的代码,应该是一样的。(有点怀疑你的jar包没更新) 不知道还有人有这样的问题啵,给点反馈啊。 |
|
返回顶楼 | |
发表时间:2009-09-16
哦,可以了,无好意思啊. 可能是包没有应用好.
现在可以传值了. 谢谢!!! |
|
返回顶楼 | |
发表时间:2009-09-16
dongfengpo25 写道 哦,可以了,无好意思啊. 可能是包没有应用好.
现在可以传值了. 谢谢!!! 哈哈,那就好,那就好,这个很正常,我自己也常常被这种问题困扰,呵呵。 有问题希望多反馈,项目才能进步。 |
|
返回顶楼 | |
发表时间:2009-09-24
为什么JDK版本这么高
1.6? 搞的我不能直接只用 楼主不用1.4的,最起码用个1.5吧 哎。。。 |
|
返回顶楼 | |