Я пытаюсь отправить таблицу данных с использованием стандартной формы в бэкэнд 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 списка в моем контроллере, один из которых содержит значения флажков, а другой содержит значения блоков выбора только для тех строк, где флажок выбора был установлен.
Возможно ли это вообще?