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

Я пытаюсь отправить таблицу данных с использованием стандартной формы в бэкэнд Spring Boot Controller.

Таблица использует разбиение на страницы и отображает 5 строк одновременно.

Проблема 1: При отправке страница в Datatable, на которой я сейчас работаю, дублируется в значениях бэкэнда. Таким образом, кажется, что форма принимает все, что показано на экране, а затем JQuery также принимает полный Datatable, и это вызывает дублирование.

Проблема 2: Все поля выбора представлены в виде полного списка.

Я посмотрел на решения, найденные здесь: Как отправить флажки со всех страниц с помощью jQuery DataTables

Но все они работают с одним флажком в строке таблицы. И проблема с решением здесь: https://www.gyrocode.com/articles/jquery-datatables-how-to-submit-all-pages-form-data/

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

My Datatable имеет флажок и поле выбора. В нумерации страниц много строк, здесь я показываю только один.

<tbody>
  <tr role="row" class="odd">
    <td class="sorting_1">
      <input type="checkbox" id="formFieldSelect" name="formFieldSelect" value="1">
    </td>
    <td>
      <select class="form-control form-control-sm" id="formFieldStatus" name="formFieldStatus">
        <option value="Disabled">Disabled</option>
        <option value="Enabled">Enabled</option></select>
    </td>
  </tr>
</tbody>

Jquery, который я пробовал:

    $(document).ready(function() {
        // Handle form submission event
        $('#myForm').on('submit', function(e){
            var table = $('#formFieldsDataTable').DataTable();
            var form = this;

            // Iterate over all elements in the table
            var params = table.$('input, select').serializeArray();
            $.each(params, function(){
                // If element doesn't exist in DOM
                if(!$.contains(document, form[this.name])){
                    // Create a hidden element
                    $(form).append(
                        $('<input>')
                            .attr('type', 'hidden')
                            .attr('name', this.name)
                            .val(this.value)
                    );
                }
            });
        });

    });

Я хочу, чтобы только те строки, для которых установлен флажок, были отправлены вместе с полем выбора только для этой строки моему контроллеру. Таким образом, я получу 2 списка в моем контроллере, один из которых содержит значения флажков, а другой содержит значения блоков выбора только для тех строк, где флажок выбора был установлен.

Возможно ли это вообще?

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