У меня есть модальное окно начальной загрузки, обернутое внутри тега формы.
<form method = "POST" th:action = "@{/ProcessRequest}">
//Long Bootstrap modal code inside this form. At the end I have two action (POST) buttons as:
<input type = "submit" id = "submit" class = "btn btn-background btn-sm" name = "action" value = "Approve" />
<input type = "submit" id = "reject" class = "btn btn-background btn-sm" name = "action" value = "Reject" />
У меня есть таблица в моем интерфейсе, и этот модальный загрузчик запускается при нажатии на крайнее правое поле / столбец в этой таблице.
<tr th:each = "manObj : ${manObj}">
<td th:text = "${manObj.requestId}" title = "Requestd ID"></td>
<td th:text = "${manObj.requestor}" title = "Requestor"></td>
<td th:text = "${manObj.commodity}" title = "Commodity"></td>
<td th:text = "${manObj.effectiveDate}" title = "Input Date">
<td title = "Approve Request"><a th:href = "@{findOne/(requestId=${manObj.requestId},requestLineNbr=${manObj.requestLineNbr})}"
class = "btn btn-primary eBtn">
<img src = "./images/approver_menu.png" width = "12px" height = "12px"></img>
</a></td>
</tr>
Я связываю объект в каждой строке таблицы и модальном окне, используя jquery для сохранения этого объекта в переменной href, а затем заполняю модальное окно следующим образом:
$('.tableA').on('click','.eBtn',function(event) {
event.preventDefault();
$('#confirmViewRequest').modal('show');
var href = $(this).attr('href');
$.get(href,function(manObj,status){
$('.myform #requestId').html(manObj.requestId);
$('.myform #effectiveDate').html(manObj.effectiveDate);
$('.myform #expirationDate').html(manObj.expirationDate);
$('.myform #commodity').html(manObj.commodity);
$('.myform #discount').html(manObj.discount);
$('.myform #address1').html(manObj.address1);
$('.myform #city').html(manObj.city);
$('.myform #state').html(manObj.state);
});
У меня есть методы в моем контроллере, где мне нужны значения, хранящиеся в этой динамической модели начальной загрузки, чтобы я мог выполнять необходимые внутренние действия. НО я не знаю, как загрузить requestId в контроллер, как только пользователь нажимает эту кнопку Approve. Прямо сейчас у меня есть контроллер как:
@PostMapping(value = "/ProcessRequest",params = "action=Approve")
public String ApproveRequest() {
//Need to fetch requestId here so that I can do necessary actions
//Integer requestId = Integer.parseInt(requestIdStr);
//ip1requestCustom.changeStatus(requestId);
//System.out.println("All status changed for"+requestId);
return "home";
}
@PostMapping(value = "/ProcessRequest",params = "action=Reject")
public String RejectRequest() {
//Same. need that requestId from dynamic bootstrap modal
return "home";
}
Мне нужно либо значение, хранящееся в 'requestId', либо объект в моем контроллере. Как это можно сделать?




Я смог решить эту проблему, используя тег <input> вместо тега <span> в модальном окне. Затем я дал атрибут name тегу <input> для этих динамических данных. Затем я использовал RequestParam, чтобы получить значение, содержащееся в этом поле. Вкратце, я сделал это со своим контроллером:
@PostMapping(value = "/ProcessRequest",params = "action=Approve")
public String ApproveRequest(@RequestParam Map<String,String> reqPar) {
String requestId = reqPar.get("requestId");
System.out.println(requestId);
return "home";
}