juel表达式怎么写
How to write juel expression
最近我试用了 JUEL,现在我很困惑如何编写几个我在文档中找不到示例的方法。
只给我这个
http://juel.sourceforge.net/guide/start.html
如果我有context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));
,我想知道如何写出来
因为我们知道 bigDecimal 表达式是这样写的 foo.compareTo(bigDecimal);
这个在表达式中怎么写?
轻松完成,有 2 个可能的答案
因为SimpleContext
让你做算术计算(在我的例子中),我简单地把计算放在这里。我还使用 ValueExpression
(我猜不在正确的位置)为我提供 SimpleContext
的映射值。因此,这是我所拥有的
context.setVariable("fii", factory.createValueExpression(new BigDecimal(3), BigDecimal.class));
context.setVariable("fee", factory.createValueExpression(new BigDecimal(5), BigDecimal.class));
ValueExpression e1 = factory.createValueExpression(context, "${fee}", BigDecimal.class);
ValueExpression e2 = factory.createValueExpression(context, "${fii}", BigDecimal.class);
String temp1 = (String)e1.getValue(context).toString();
String temp2 = (String)e2.getValue(context).toString();
context.setVariable("foo", factory.createValueExpression(new BigDecimal(temp1).add(new BigDecimal(temp2)), BigDecimal.class));
ValueExpression e = factory.createValueExpression(context, "${foo}", BigDecimal.class);// will return 8
但是我又一次不知道这对不对,所以我想到了第二个
创建一个class,制作一些需要2个参数的静态方法,然后就可以了。假设这个 class 名为 Operate
public static BigDecimal add (BigDecimal val1, BigDecimal val2){
return val1.add(val2);
}
public static BigDecimal subtract (BigDecimal val1, BigDecimal val2){
return val1.subtract(val2);
}
那我就这样称呼它
context.setFunction("meh", "max", Operate.class.getMethod("add", BigDecimal.class, BigDecimal.class));
ValueExpression e = factory.createValueExpression(context, "${meh:max(fii,fee)}", BigDecimal.class);// also return 8
我更喜欢使用第二种,希望这会有所帮助
最近我试用了 JUEL,现在我很困惑如何编写几个我在文档中找不到示例的方法。
只给我这个 http://juel.sourceforge.net/guide/start.html
如果我有context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));
因为我们知道 bigDecimal 表达式是这样写的 foo.compareTo(bigDecimal);
这个在表达式中怎么写?
轻松完成,有 2 个可能的答案
因为
SimpleContext
让你做算术计算(在我的例子中),我简单地把计算放在这里。我还使用ValueExpression
(我猜不在正确的位置)为我提供SimpleContext
的映射值。因此,这是我所拥有的context.setVariable("fii", factory.createValueExpression(new BigDecimal(3), BigDecimal.class)); context.setVariable("fee", factory.createValueExpression(new BigDecimal(5), BigDecimal.class)); ValueExpression e1 = factory.createValueExpression(context, "${fee}", BigDecimal.class); ValueExpression e2 = factory.createValueExpression(context, "${fii}", BigDecimal.class); String temp1 = (String)e1.getValue(context).toString(); String temp2 = (String)e2.getValue(context).toString(); context.setVariable("foo", factory.createValueExpression(new BigDecimal(temp1).add(new BigDecimal(temp2)), BigDecimal.class)); ValueExpression e = factory.createValueExpression(context, "${foo}", BigDecimal.class);// will return 8
但是我又一次不知道这对不对,所以我想到了第二个
创建一个class,制作一些需要2个参数的静态方法,然后就可以了。假设这个 class 名为
Operate
public static BigDecimal add (BigDecimal val1, BigDecimal val2){ return val1.add(val2); } public static BigDecimal subtract (BigDecimal val1, BigDecimal val2){ return val1.subtract(val2); }
那我就这样称呼它
context.setFunction("meh", "max", Operate.class.getMethod("add", BigDecimal.class, BigDecimal.class)); ValueExpression e = factory.createValueExpression(context, "${meh:max(fii,fee)}", BigDecimal.class);// also return 8
我更喜欢使用第二种,希望这会有所帮助