java - Evaluating an Expression using MVEL -
java - Evaluating an Expression using MVEL -
i need evaluate look in mvel containing date. basically, i need add together number of days given date , value. when trying evaluate look in mvel, getting exceptions.
here code::
package mvel; import java.io.serializable; import java.text.parseexception; import java.text.simpledateformat; import java.util.calendar; import java.util.date; import java.util.hashmap; import java.util.map; import org.mvel2.mvel; import org.mvel2.integration.variableresolverfactory; import org.mvel2.integration.impl.mapvariableresolverfactory; public class mveldatetest { public static void main(string[] args) throws parseexception { // todo auto-generated method stub map<string, object> m1 = new hashmap<string, object>(); m1.put("name", "xyz"); simpledateformat sdf = new simpledateformat("dd/mm/yyyy"); date d1 = sdf.parse("02/10/2014"); m1.put("doj", d1); //date d2=sdf.parse("05/10/2014"); system.out.println("given date"+" "+d1); final calendar c = calendar.getinstance(); c.settime(d1); system.out.println(c.gettime()); date finaldate=(date) mvel.eval("c.add(calendar.day_of_month, 4)",m1); system.out.println(finaldate); } }
i getting next exception::
exception in thread "main" [error: unresolvable property or identifier: c] [near : {... c.add(calendar.day_of_month, 4 ....}] ^ [line: 1, column: 1] @ org.mvel2.propertyaccessor.getbeanproperty(propertyaccessor.java:677) @ org.mvel2.propertyaccessor.getnormal(propertyaccessor.java:179) @ org.mvel2.propertyaccessor.get(propertyaccessor.java:146) @ org.mvel2.propertyaccessor.get(propertyaccessor.java:126) @ org.mvel2.ast.astnode.getreducedvalue(astnode.java:187) @ org.mvel2.mvelinterpretedruntime.parseandexecuteinterpreted(mvelinterpretedruntime.java:106) @ org.mvel2.mvelinterpretedruntime.parse(mvelinterpretedruntime.java:49) @ org.mvel2.mvel.eval(mvel.java:165) @ mvel.mveldatetest.main(mveldatetest.java:31)
you have add together c
context m1
. also, calender
unknown, too, utilize c
instead (ugly, works). finally, note add
returns void, i.e. modifies c
in-place. seek this:
system.out.println(c.gettime()); m1.put("c", c); mvel.eval("c.add(c.day_of_month, 4)", m1); system.out.println(c.gettime());
output:
thu oct 02 00:00:00 cest 2014 mon oct 06 00:00:00 cest 2014
java expression mvel
Comments
Post a Comment