Thymeleaf中如何用#strings.equals判断多值?是否可行?
在Thymeleaf中判断字符串是否匹配多个指定值的正确方式
首先明确:#strings.equals()方法仅支持两个单一字符串的比较,无法直接用来匹配多个指定值,你之前的写法存在语法错误,所以无法生效。
你的写法问题所在
你写的${#strings.equals(firstName,['Yann'|| 'James'|| 'Harry'])}有两个关键错误:
['Yann'|| 'James'|| 'Harry']不是合法的Thymeleaf集合/表达式写法,逻辑或||不能用来拼接字符串生成集合;#strings.equals()的第二个参数必须是单个字符串,而非集合或非法表达式。
正确实现方式
推荐三种可行的写法:
1. 使用Thymeleaf原生in表达式(最简洁)
直接判断目标字符串是否在指定的字符串集合中:
${firstName in {'Yann', 'James', 'Harry'}}
2. 用or连接多个#strings.equals()判断
如果需要明确调用#strings.equals(),可以通过逻辑或连接多个独立的比较:
${#strings.equals(firstName, 'Yann') or #strings.equals(firstName, 'James') or #strings.equals(firstName, 'Harry')}
3. 借助SpEL的集合contains方法(适用于Spring环境)
利用Java的Arrays工具类生成集合,再用contains方法判断:
${#lists.contains(T(java.util.Arrays).asList('Yann', 'James', 'Harry'), firstName)}
内容的提问来源于stack exchange,提问作者ABC
相关产品推荐
相关产品推荐

