Отправка дополнительных параметров кроме полей формы - PullRequest
0 голосов
/ 26 мая 2018

Добрый день всем.Я пишу проект, основанный на Thymeleaf, и я застрял с такой проблемой.Ну у меня есть форма, с помощью которой будет осуществляться поиск.

 <form method="get" th:action="@{/participants/search}">

     ...

    <button id="searchButton" class="btn btn-default"                                    
            th:onclick="|sendSearchRequest(this.form, 0, ${selectedPageSize})|">Search</button>
 <form>

У меня есть некоторые входы и выбирает внутри этой формы.Но также мне нужно отправить некоторые pageSize (количество элементов для отображения) и индекс currentPage для работы с объектом Pageable на сервере.Ну, я попытался сделать что-то вроде этого:

 function sendSearchRequest(form, currentPage, pageSize) {
    form.action = '/participants/search/' + getSearchParams(currentPage,pageSize);
    form.submit();
 }

И в методе getSearchParams (...) я хотел получить все параметры из формы + добавить информацию о currentPage и pageSize.

  function getSearchParams(currentPage, pageSize) {
     var paramString = '?page=' + currentPage + '&size=' + pageSize;
     Array.from($("#searchForm").find(":input").not(":button"))
       .forEach(function (child) {
     paramString += "&" + child.name + "=" + child.value;
    });
    return paramString;
  }

Ну, проблема в том, что я не могу передать дополнительные параметры страницы в мой запрос.Только поля из формы могут быть пропущены.В моем запросе я могу только это:

  ...participants/search/?searchParam=c&applicationType=&status=all

Итак, как вы можете видеть, там нет параметров страницы, но я думал, что это будет что-то вроде этого:

participants/search/? 
  page=0&size=20&searchParam=c&applicationType=&status=all

Кстати, яТакже пытались:

 location.replace('/participants/search/' + getSearchParams(currentPage, pageSize))

Но результат также был неудачным.

Не могли бы вы предложить какое-нибудь решение для меня?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018
    You can try using an ajax request, simple store the additional information as a json object and pass it to your controller.

    **Json data**

    dataset = {

      "into" : "value1"
      "into2" : "value2"
    }

Ajax request would look like this;

   $.ajax({
                type: "POST",
                accept: "text/html",
                //contentType: "application/json; charset=utf-8",
                dataType: "html",
                url: "${pageContext.request.contextPath}/yoururl/"",
                data: ({
                    "data": dataset


                }),
                success: function() {
                   console.log("done");
                }

            });
0 голосов
/ 26 мая 2018

Пожалуйста, используйте скрытые поля типа ввода для отправки дополнительного параметра запроса с отправкой формы, как показано ниже:

<form method="get" th:action="@{/participants/search}">
        ...
    <input value="1" type="hidden" name="page">
    <input value="10" type="hidden" name="size">

    <button id="searchButton" class="btn btn-default" th:onclick="|sendSearchRequest(this.form, 0, ${selectedPageSize})|">Search</button>

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