Recientemente Trato a cabo JUEL, y ahora me confundo cómo escribir varios métodos que no puedo encontrar el ejemplo en la documentación.
Es sólo dame esta http://juel.sourceforge.net/guide/start.html
y aquí lo que quiero saber cómo escribirlo si tengo context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));
ya que sabemos expresión BigDecimal es escritura como foo.compareTo(bigDecimal);
forma de escribir esto en la expresión?
Hacer fácilmente con 2 posibles respuestas
Dado que
SimpleContext
permitirá hacer cálculos aritméticos (en mi caso), simplemente me puse el cálculo aquí. También usoValueExpression
(no en el lugar correcto, supongo) para proporcionar me mapeado de valorSimpleContext
. Por lo tanto, aquí lo tengocontext.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
Pero una vez más no se sabe muy bien que es correcto o no, así que se le ocurrió la segunda
Crear una clase, hacer algunos métodos estáticos que requieren parámetros 2, y aquí va. Digamos que esta clase nombrada
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); }
Entonces, yo lo llamo como esto
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
Yo prefiero usar el segundo, espero que esto sea útil