Как подстрочить переменную и объединить ее с URL в Thymeleaf

#javascript #spring-boot #jpa #thymeleaf

#javascript #весенняя загрузка #jpa #thymeleaf

Вопрос:

Я хочу подстрочить переменную, которая является полем идентификатора моего класса JPA, а затем добавить ее к URL в Thymeleaf.

Мой URL похож

 /Myapplication/sortddoc/value=__${entity.id}__
  

Итак, мне нужно сделать что-то вроде

 ${entity.id}.substr(0, 8) 
  

перед объединением ее с URL.

Я попытался создать новое поле Transient в моем классе entity, содержащее переменную substring, но это не работает, потому что, похоже, требуется поле базы данных, которое я не могу предоставить.

Кто-нибудь может мне помочь, пожалуйста?

Комментарии:

1. Это ваш URL: /Myapplication/sortddoc/value= ? Вы уверены? Должно ли это быть что-то вроде: /Myapplication/sortddoc?value= ? Это ваш value параметр или часть пути?

2. это может быть и то, и другое, в thymeleaf я вызываю внешний URL следующим образом:href=»@{/Myapplication/sortddoc/value=__${entity.id }__} но я мог бы сделать это так, как вы говорите, моя проблема в том, как подстрочить $ {entity.id } перед добавлением ее в качестве значения

3. Существует вспомогательный объект Thymeleaf #strings ; таким образом, вы можете создать временную переменную и использовать ее в пути: th:with="${trancatedId=#strings.substring(entity.id,0,8)}"

4. Для меня это хорошо работает, большое спасибо

Ответ №1:

Вы должны делать это с помощью стандартного синтаксиса URL Thymeleaf вместо объединения строковых переменных или использования предварительной обработки (ни в том, ни в другом нет необходимости).

 <a th:with="${value=#strings.substring(entity.id,0,8)}"
   th:href="@{/Myapplication/sortddoc/(value=${value})}"></a>
  

или

 <a th:href="@{/Myapplication/sortddoc/(value=${#strings.substring(entity.id,0,8)})}"></a>