Как написать джул выражение
Недавно я опробовал JUEL, и теперь я запутался, как написать несколько методов, которые я не могу найти в документации.
Это только дать мне это http://juel.sourceforge.net/guide/start.html
и вот что я хочу знать, как написать это, если у меня есть context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));
так как мы знаем, bigDecimal выражение пишется как foo.compareTo(bigDecimal);
как написать это в выражении?
1 ответ
Сделано легко с 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
Но еще раз я не знаю, правильно это или нет, поэтому я придумал второй
Создайте класс, создайте несколько статических методов, которые требуют 2 параметра, и вот оно. Допустим, этот класс называется
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
Я предпочитаю использовать второй, надеюсь, это будет полезно