Как передать переменную в session.attribute.contains () thymeleaf? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть несколько пользовательских ролей, которые проходят через атрибуты сеанса. Я хотел бы проверить эти роли в HTML файле по имени переменной из properties.message. Но он показывает EL1043E: неожиданный токен. Ожидаемый «идентификатор», но был «lcurly ({)». Как я могу решить эту проблему?

Мой класс контроллера выглядит следующим образом:

Class RoleController{

    public void getDashboardInformation(Model model, HttpSession session) {
                session.setAttribute("roles", getUserRoleIds());
    }
 }

Мои message.properties. xml как показано ниже:

planner=4
sectionManager=5    

Мой HTML файл, как показано ниже:

<div class="custom-file upload-text-area">
		<input th:attrappend="disabled=${session.roles.contains(5)} ? '' : 'disabled'" type="file"        class="custom-file-input upload-text-area" id="CardFileName" name="CardFileName" accept=".csv">
		<label class="custom-file-label" for="customFile">please insert</label>
</div>
 <span class="input-group-btn">
   <input th:attrappend="disabled=${session.roles.contains(4)} ? '' : 'disabled'" class="form-control" type="submit" value="submit"></span>

Работает нормально. Но когда я собираюсь заменить 4 и 5 значением message.properties, как показано ниже:

    <div class="custom-file upload-text-area">
    		<input th:attrappend="disabled=${session.roles.contains(#{sectionManager})} ? '' : 'disabled'" type="file"        class="custom-file-input upload-text-area" id="CardFileName" name="CardFileName" accept=".csv">
    		<label class="custom-file-label" for="customFile">please insert</label>
    </div>
     <span class="input-group-btn">
       <input th:attrappend="disabled=${session.roles.contains(#{planner})} ? '' : 'disabled'" class="form-control" type="submit" value="submit"></span>

Отображается следующая ошибка: EL1043E: Неожиданный токен. Ожидаемый «идентификатор», но был «lcurly ({)»

1 Ответ

1 голос
/ 21 марта 2020

Мне удалось воссоздать эту проблему, а затем решить ее с помощью препроцессора Thymeleaf .

Например:

th:attrappend="disabled=${session.roles.contains(__#{planner}__)} ? '' : 'disabled'"

Мой тестовый пример был проще чем у вас, но я думаю, что это должно сработать для вас. Препроцессор гарантирует, что выражение сообщения уже вычислено (в вашем случае целочисленное значение), прежде чем будет вычислена остальная часть выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...