Cómo escribir la expresión Juel

Andreas Chandra Gaozu:

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?

Andreas Chandra Gaozu:

Hacer fácilmente con 2 posibles respuestas

  1. Dado que SimpleContextpermitirá hacer cálculos aritméticos (en mi caso), simplemente me puse el cálculo aquí. También uso ValueExpression(no en el lugar correcto, supongo) para proporcionar me mapeado de valor SimpleContext. Por lo tanto, aquí lo tengo

    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
    

Pero una vez más no se sabe muy bien que es correcto o no, así que se le ocurrió la segunda

  1. Crear una clase, hacer algunos métodos estáticos que requieren parámetros 2, y aquí va. Digamos que esta clase nombradaOperate

    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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=214948&siteId=1
Recomendado
Clasificación