Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何写朱尔表达式_Java_Juel - Fatal编程技术网

Java 如何写朱尔表达式

Java 如何写朱尔表达式,java,juel,Java,Juel,最近我尝试了JUEL,现在我对如何编写一些我在文档中找不到的方法感到困惑 只是给我这个 如果我有context.setFunction(“meh”,“max”,BigDecimal.class.getMethod(“compareTo”,BigDecimal.class)),我想知道如何写出它 因为我们知道bigDecimal表达式是像foo.compareTo(bigDecimal)那样编写的 如何在表达式中写入此项?使用两种可能的答案轻松完成 由于SimpleContext允许您进行算术计

最近我尝试了JUEL,现在我对如何编写一些我在文档中找不到的方法感到困惑

只是给我这个

如果我有
context.setFunction(“meh”,“max”,BigDecimal.class.getMethod(“compareTo”,BigDecimal.class)),我想知道如何写出它

因为我们知道bigDecimal表达式是像
foo.compareTo(bigDecimal)那样编写的

如何在表达式中写入此项?

使用两种可能的答案轻松完成

  • 由于
    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  
    
  • 我更喜欢使用第二个,希望这将是有益的