最近我尝试了JUEL,现在我很困惑如何编写在文档中找不到该示例的几种方法。
只给我这个 http://juel.sourceforge.net/guide/start.html
如果我有public async postdata(): Promise<bool> {
if (!this.name || !this.teamurl) {
return; // no valid data. abort.
}
// given that there is a type called Team and it has a constructor which
// takes corresponding parameters - init up a new instance of Team with
// current name and teamurl values
let payload = new Team(this.name, this.teamurl);
try {
await this.http.fetch(postPath, {
method: "post",
body: JSON.stringify(payload),
}).then(response => response.json());
// return true if no error, there might be a need for more complicated logic here
// depending on what your post endpoint returns
return true;
} catch(e: Exception) {
console.log("Error: ", e.Message); // handle the error logging however you need.
return false;
}
}
因为我们知道bigDecimal表达式的写法类似于context.setFunction("meh", "max", BigDecimal.class.getMethod("compareTo", BigDecimal.class));
如何在表达式中写这个?
答案 0 :(得分: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
我更喜欢使用第二个,希望对您有所帮助