Я получаю 500 всегда, когда метод контроллера показан ниже.
@RequestMapping(value ="transferInvoiceHdrForm", method = RequestMethod.GET)
protected ModelAndView showForm(@ModelAttribute("transferInvoice") TransferInvoiceForm trinvoiceform, final HttpServletRequest request, final HttpServletResponse response, Model model)throws Exception {
TransferInvoiceHdr transferInvoiceHdr = new TransferInvoiceHdr();
List<TransferInvoice> transferinvoice= transferInvoiceHdrService.getAssetCategoriesandTransfer();
List<Employees> employees = transferInvoiceHdrService.getAssignEmployee();
trinvoiceform.setTrinvoiceList(transferinvoice);
log.info("++++"+trinvoiceform.getTrinvoiceList());
model.addAttribute("employees", employees.get(0).getFullname());
// model.addAttribute("transferinvoice", transferinvoice);
model.addAttribute("transferInvoiceHdr", transferInvoiceHdr);
//model.addAttribute("transferInvoice", transferinvoice);
return new ModelAndView("asset/transferInvoiceHdrForm", model.asMap());
}
Мой Pojo со списком объектов выглядит так:
public class TransferInvoiceForm {
private List<TransferInvoice> TrinvoiceList;
//getters and setters
в моем JSP я использую переменную пути, как показано ниже
<form:form method="post" action="/asset/invoice/searchctr" modelAttribute="transferInvoice">
<fieldset>
<c:forEach var="transferinvoiceType" items="${transferInvoice.TrinvoiceList}" varStatus="status">
<form:select path="TrinvoiceList[${status.index}].assetName" class="col-xs-12 col-lg-5 form-group">
<form:option value="0" selected="true">All</form:option>
<form:options value="${transferinvoiceType.assetName}"></form:options>
</form:select>
</c:forEach>
<c:forEach var="transferinvoiceType" items="${transferInvoice.TrinvoiceList}" varStatus="status">
<form:select path="TrinvoiceList[${status.index}].assettoLocation" class="col-xs-12 col-lg-5 form-group">
<form:option value="0" selected="true">All</form:option>
<form:options value="${transferinvoiceType.assettoLocation}"></form:options>
</form:select>
</c:forEach>
<button class="btn btn-primary" type="submit" class="col-xs-12 col-lg-6 form-group">
<fmt:message key="button.search" />
</button>
</fieldset>
</form:form>
Еще один полезный компонент java
public class TransferInvoice {
private String assetName;
private String assettoLocation;
private String actualTransferDate;
private String scanserialCode;
private String modelNum;
private boolean check;
//getters and setters
Любая помощь, почему я получал 500. Я тщательно проверил и подтвердил, что проблема выходит из моей привязки jsp. Любая помощь будет оценена по достоинству.
благодаря
Вы можете использовать следующий процесс для восстановления после этой ситуации. Всякий раз, когда вы используете тег формы JSTL, поэтому на странице jsp вы можете использовать:
<form:form commandName="viewModel" method="POST">
В части контроллера вы можете напрямую использовать свою модель TransferInvoice, чтобы получить все данные со страницы jsp. И если необходимо сохранить данные в TransferInvoiceForm pojo, тогда вы можете управлять им под контроллером. Таким образом, вы можете выполнить следующий код:
@RequestMapping(value ="yourValue", method = RequestMethod.POST)
protected ModelAndView showForm(@ModelAttribute("viewModel") TransferInvoice transferInvoice, final HttpServletRequest request, final HttpServletResponse response, Model model)throws Exception {
//use every thing for transferInvoice
}
method = RequestMethod.POST
использования method = RequestMethod.POST
попробуйте заменить path="TrinvoiceList[
с помощью path="transferinvoiceType[
и вы должны быть хорошими, я верю. Проблема здесь в том, что вы можете получить доступ к элементу arraylist, который вы повторяете, используя значение, установленное для атрибута var в c: foreach, и когда вы смотрите на свой код, вы видите, что пытаетесь напрямую получить доступ к атрибуту объекта.