Как изменить URL get метод в форме? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу создать функцию поиска, которая будет фильтровать данные по типу буквы.

Форма:

<form action="/viewall/filterBy" th:object="${letter}" method="get">
    <table class="table table-bordered" style="width:100%">
        <tbody>
            <tr>
               <th>
                    <select class="form-control" id="type_form" th:field="*{id_type}" name="id_type">
                        <option disabled="disabled" selected="selected" value="0">--Select--</option>
                        <option th:each="type : ${letter_types}" th:value="${type.id}" th:text="${type.name}"></option>
                    </select>
               </th>
            </tr>
            <tr>
                <th>    
                    <button style="display: block" class="btn btn-info"> <i class="fa fa-search"></i> Search</button>
                </th>
            </tr>
        </tbody>
    </table>
</form>

Контроллер

@RequestMapping (value="/viewall/filterBy", method= RequestMethod.GET) public String filterBy(Model model,@ModelAttribute("letter") LetterModel letter, @RequestParam(value="id_type", required=true) Integer id_type)  {
    ....
    return "letter-view"; 
}

Если я выполню,URL-адрес ниже:

http://localhost:8080/viewall/filterBy?id_type=3

Мой вопрос: возможно ли изменить URL-адрес, чтобы он стал

http://localhost:8080/viewall/filterBy/3

Заранее спасибо.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 15 мая 2018

У вас может быть следующий тип URL:

http://localhost:8080/viewall/filterBy/3

, тогда ваше отображение Controller будет выглядеть следующим образом:

@RequestMapping (value="/viewall/filterBy/{id_type}", method= RequestMethod.GET) 
public String filterBy(Model model, @PathVariable(name = "id_type") int idType)  {
    ....
    return "letter-view"; 
}

или более упрощенный подход:

@GetMapping (value="/viewall/filterBy/id_type/{id}") 
public String filterBy(Model model, @PathVariable(name = "id") int idType)  {
    ....
    return "letter-view"; 
}

ОБНОВЛЕНИЕ

Теперь, когда ваш шаблон URL изменился, вы должны отправить форму через javascript.Вы должны добавить выбранное значение в ваш URL, а затем отправить форму.Чтобы отправить форму через javascript, используйте следующие коды:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>

   <select class="form-control" id="type_form" th:field="*{id_type}" name="id_type">
     <option disabled="disabled" selected="selected" value="0">--Select--</option>
     <option th:each="type : ${letter_types}" th:value="${type.id}" th:text="${type.name}"></option>
   </select>

   <button onclick="submitForm()"> SUBMIT </button> <!--this will call the submitForm() javascript function given below -->

  <script type="text/javascript">
      function submitForm() {

          var selectedOption = document.getElementById("type_form"); // the <select> is assigned to the variable using its id

          window.location = "/viewall/filterBy/" + selectedOption.value; // here we concat the url with the selected  option and assign it to the action of the form
      }
  </script>

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