2016-07-26 377 views
0

我试图比较选择输入中的值以启用某些元素的选择selected="selected"Thymeleaf#lists.contains()的弹簧启动不会比较相等的值

我真的使用:春季启动1.4.0Thymeleaf 2.1.5

当我检查是否有值,我敢肯定有一个列表,总是返回false

<p th:each="modulo : ${usuario.papeis}" th:text="${modulo.nome} + ' - ' + ${meusPapeis} + ' | ' + ${meusPapeis.contains(modulo.nome)}"></p> 

日期:

ROLE_DASHBOARD - [ROLE_DASHBOARD, ROLE_USUARIO, ROLE_CONFIGURACOES] | false


尝试另一种方法:

<p th:each="modulo : ${usuario.papeis}" th:text="${modulo.nome} + ' - ' + ${meusPapeis} + ' | ' + ${#lists.contains(meusPapeis, modulo.nome)}"></p> 

日期:

ROLE_DASHBOARD - [ROLE_DASHBOARD, ROLE_USUARIO, ROLE_CONFIGURACOES] | false


真的,我不知道是什么问题,因为当使用一个字符串我的回报true

<p th:each="modulo : ${usuario.papeis}" th:text="${modulo.nome} + ' - ' + ${meusPapeis} + ' | ' + ${#lists.contains(meusPapeis, 'ROLE_DASHBOARD')}"></p> 

输出:

ROLE_DASHBOARD - [ROLE_DASHBOARD, ROLE_USUARIO, ROLE_CONFIGURACOES] | true

有什么办法来完成这种比较,使用可变值?

回答

3

您应该使用表达式实用程序#strings将其转换为方法toString(stringToConvert)的字符串。枚举总是令人困惑的使用。 按照documentation

尝试#strings.toString(modulo.nome)。它应该工作。

+0

工程就像一个魅力! –