У меня есть объект с именем Request, который является основным объектом моего портала, в котором хранится вся информация о запросе, пользователе, их формах выбора и т. Д. Как сохранить всю предыдущую информацию между различными формами? В каждом .GET я должен установить объект запроса, а затем в каждом .POST единственная информация, которая ему передается, - это то, что находится в формах на страницах .GET. Поэтому на каждой странице должны быть скрытые поля, такие как
<form:input path='requestId' style='display:none' />
<form:input path='currentUserId' style='display:none' />
<form:input path="step" style='display:none' />
Мне нужны эти поля, а также хотелось бы иметь остальные поля в объекте запроса, которых нет в форме, без необходимости повторять это для каждого поля в моем объекте.
@RequestMapping(value = "/review", method = RequestMethod.GET)
public ModelAndView showCorReview(@RequestParam(value = "requestId") String requestId,
@CookieValue(value = "EMP_ID", defaultValue = "168") int userId)
{
Request request = requestManager.getRequestById(Integer.parseInt(requestId));
request.setCurrentUserId(userId);
String pageTitle = "2.1: Initiate New Service Request -- (Review)";
ModelAndView mav = new ModelAndView();
mav.setViewName("newRequest/review");
mav.addObject("title", pageTitle);
mav.addObject("request", request);
mav.addObject("cpm", userManager.getUserById(request.getCpm()).getName());
return mav;
}
@RequestMapping(value = "/review", method = RequestMethod.POST)
public String saveReview(Request request, @RequestParam(value = "commentData", required = false) String[] additionalComments)
{
if (additionalComments != null)
commentLogManager.addCommentLog(additionalComments, request);
if (request.getRejectReason() == "")
{
request.setCpm(admin.getCPM(request.getContract()).getId());
request.setCor(admin.getCOR(request.getContract()).getId());
requestManager.updateRequest(request);
}
else
{
if (request.getSubmitType().equals("return"))
{
request.setNextStep(1);
requestManager.moveRequestToStep(request);
}
}
return worksheetUrl + request.getId();
}
Альтернативно я мог бы также в .POST сделать
Request request = requestManager.getRequestById(Integer.parseInt(requestId))
Затем используйте сеттеры во всех полях формы, но опять же, я бы предпочел, чтобы данные фактически сохранялись сами по себе, без явного вызова этого.