Как написать джул выражение - PullRequest
0 голосов
/ 28 января 2019

Недавно я опробовал JUEL, и теперь я запутался, как написать несколько методов, пример которых я не могу найти в документации.

Это только дает мне это http://juel.sourceforge.net/guide/start.html

и вот что я хочу знать, как написать это, если у меня есть context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));

, поскольку мы знаем, что выражение bigDecimal записывается как foo.compareTo(bigDecimal); как записать это в выражении?

1 Ответ

0 голосов
/ 29 января 2019

Легко сделать с 2-мя возможными ответами

  1. Поскольку 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  

Я предпочитаю использовать второй, надеюсь, это будет полезно

...