Параметры URL-адреса сокращения Spring Thymeleaf (форма — получить)

Текущее состояние :

https://localhost:8443/обходной путь/?query=dasda&atn=s&filterSoftwareType=ANY.....

Желаемое состояние : https://localhost:8443/обходной путь/?д=dasda&atn=s&фст=ЛЮБОЙ.....

Сократите URL-адрес, используя q вместо запроса и fst вместо filterSoftwareType.

Мой тимелеаф html выглядит так, краткий пример:

<form action = "#" class = "card card-sm rounded"
                  method = "get"
                  th:action = "@{${T(com.bisciak.workaround.util.Utils).MAPPING_INDEX}}" th:object = "${search}">

     <div class = "col">
           <input class = "form-control form-control-lg form-control-borderless"
                               placeholder = "Search here"
                               style = "padding-left: 1rem"
                               th:field = "${search.query}" type = "search"/>
     </div> etc...

Контроллер :

  @GetMapping(value = Utils.MAPPING_INDEX, params = "atn=s")
 public ModelAndView indexActionSearch(@ModelAttribute(name = "s") Optional<Search> search .....

Объект поиска имеет такие свойства, как запрос и т. д., но я точно не хочу их переименовывать! Было бы просто ужасно именовать код, я хочу использовать только короткие версии для URL.

Кто-нибудь знает, как это сделать? Я попробовал атрибут имени на входе, но это не помогло :/.

Я также хочу сохранить материал в форме, чтобы URL-адрес создавался автоматически. Я также хочу сохранить это как получение, а не сообщение, чтобы пользователь мог легко поделиться этой ссылкой с помощью копирования и т. д. Из строки URL. С постом он этого не увидит.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Атрибут th:field предназначен для простого создания формы из объекта Java, а также для отправки полей обратно с использованием тех же имен, чтобы значения можно было автоматически назначать обратно объекту Java того же типа на сервере.

Если вам нужны другие имена, значит, вы используете его не по назначению, поэтому прекратите его использовать.

Если вы посмотрите документацию, то есть главу 7.2 Входы, вы увидите, что делает th:fields:

Let’s see now how to add an input to our form:

<input type = "text" th:field = "*{datePlanted}" />

... In this case (input[type=text]), the above line of code is similar to:

<input type = "text" id = "datePlanted" name = "datePlanted" th:value = "*{datePlanted}" />

Итак, измените свой код, чтобы сделать это:

<form ... th:object = "${search}">

    <input ... name = "q" th:value = "*{query}"/>

Нужно ли вам тоже id = "q" решать вам.

Обратите внимание, что если вы используете th:value = "${search.query}", то th:object = "${search}" не нужно.

Черт, все работает именно так, как ты сказал. Спасибо, это решает мою проблему!

Tomas Bisciak 28.05.2019 21:21

Другие вопросы по теме