Thymeleaf #aggregates.sum 具有多个条件
Thymeleaf #aggregates.sum with multiple conditions
我有一个MyObject
列表如下
List<MyObject> myObjList;
其中MyObject
是class定义如下
public class MyObject{
private String status;
private double amount;
}
现在我只想在金额不为空且状态代码既不是 XX
也不是 YY
时从列表中获取金额总和
我知道我可以在 java 上执行此操作,但我需要在 thymeleaf 上执行此操作,这是我尝试过的方法,但它不起作用
aggregates.sum(myObjList.?[amount!= null && (status!='XX' || status!='YY')].![amount])
我没有收到任何错误。我不确定我在这里做错了什么。
不工作是什么意思?你打错号码了吗?无论如何,您的布尔表达式不正确。表达式为 (status != 'XX' || status != 'YY')
,它将匹配所有记录。
例如,如果 status = 'XX'
那么:
('XX' != 'XX' || 'XX' != 'YY') => (false OR true) => true
同样的事情发生在 YY
:
('YY' != 'XX' || 'YY' != 'YY') => (true OR false) => true
除此之外,一切似乎都对我有用。更正的表达式(不需要状态括号,除非您认为它读起来更好):
${#aggregates.sum(myObjList.?[amount != null && (status != 'XX' && status!='YY')].![amount])}
我有一个MyObject
列表如下
List<MyObject> myObjList;
其中MyObject
是class定义如下
public class MyObject{
private String status;
private double amount;
}
现在我只想在金额不为空且状态代码既不是 XX
也不是 YY
我知道我可以在 java 上执行此操作,但我需要在 thymeleaf 上执行此操作,这是我尝试过的方法,但它不起作用
aggregates.sum(myObjList.?[amount!= null && (status!='XX' || status!='YY')].![amount])
我没有收到任何错误。我不确定我在这里做错了什么。
不工作是什么意思?你打错号码了吗?无论如何,您的布尔表达式不正确。表达式为 (status != 'XX' || status != 'YY')
,它将匹配所有记录。
例如,如果 status = 'XX'
那么:
('XX' != 'XX' || 'XX' != 'YY') => (false OR true) => true
同样的事情发生在 YY
:
('YY' != 'XX' || 'YY' != 'YY') => (true OR false) => true
除此之外,一切似乎都对我有用。更正的表达式(不需要状态括号,除非您认为它读起来更好):
${#aggregates.sum(myObjList.?[amount != null && (status != 'XX' && status!='YY')].![amount])}