Параметры сокращающего URL Spring Thymeleaf (форма - получить) параметры - PullRequest
0 голосов
/ 28 мая 2019

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

https://localhost:8443/workaround/?query=dasda&atn=s&filterSoftwareType=ANY.....

Желаемое состояние: https://localhost:8443/workaround/?q=dasda&atn=s&fst=ANY.....

Сократите 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. С постом он этого не увидит.

1 Ответ

1 голос
/ 28 мая 2019

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

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

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

Давайте теперь посмотрим, как добавить вход в нашу форму:

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

... В этом случае (input[type=text]), приведенная выше строка кода похожа на:

<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}"

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