Url-адрес динамической формы thymeleaf

<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>

Springboot

Как построить выражение для th: действие "url действия" в форме? URL зависит от переменной "название".

Я пытаюсь вот так, но не получается:

<form method="get"
    th:action="@{'/' + {baseUrl}(baseUrl=${#strings.isEmpty(name) ? '' : 'user/find/'})}">

    <input type="text" th:value="${name}"/>
    <button type="submit">Find</button>
    <button type="button"
            th:classappend="${#strings.isEmpty(name)}?'hidden':''"
            onclick="clearSearch()">X</button>
</form>

и я пробовал это, тоже не работает:

<form th:with="baseUrl=(${#strings.isEmpty(name) ? '/' : '/user/find/'})"
      th:action="@{${baseUrl}}" method="get">
0
0
1 223
1

Ответы 1

Ой, извини. Я понял, что Thymeleaf не предназначен для динамической обработки поля ввода.

Я просто пишу код JS.

$(document).ready(function () {
    var searchForm = $(this).find('#searchForm');
    searchForm.on('click', '#searchButton', function (event) {
      var form = $('#searchForm');
      var name = $('#searchInputName').val();
      var addUrl = (name === '') ? '/' : '/user/find/';
      form.attr('action', addUrl);
    });
});

после этого я понял, что могу реализовать это проще в своем контроллере :)

@GetMapping("/user/find/")
public String getNextPage(Model model, Pageable pageable,
@RequestParam(name = "name") String name) {

    if (name.isEmpty()) return "redirect:/";
....
}

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