如何检查对象列表是否包含使用百日咳的字符串?

Luc*_*cky 6 java arraylist thymeleaf

假如我有一个带有用户对象的ArrayList.

User.java

class User{
  private Long id;
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

我有一个用户列表

list.add(new User(1,"John");
list.add(new User(2,"Sam");
Run Code Online (Sandbox Code Playgroud)

如果用户列表中有一个名为"Sam"的用户,我想检查百万美元.

${#lists.contains(userList.name,'Sam')}
Run Code Online (Sandbox Code Playgroud)

但上述情况并不奏效 Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression

我也试过"(doube-quotes)

Tob*_*ías 7

您可以使用Spring Expression LanguageCollection Selection功能来实现。

10.5.17集合选择

选择是一种强大的表达语言功能,可让您通过从条目中进行选择将某些源集合转换为另一源集合。

选择使用语法?[selectionExpression]。这将过滤集合并返回一个包含原始元素子集的新集合。

在您的特定情况下,它将是:

${not userList.?[name == 'Sam'].isEmpty()}
Run Code Online (Sandbox Code Playgroud)

  • @Arpan,你是对的。我做了一个小测试。在计算表达式之前,必须对变量进行预处理:`th:if="${not userList.?[name == '__${userVar}__'].isEmpty()}"` (3认同)