У меня есть следующий код для доступа к атрибуту модели в html с использованием весенней загрузки.
@RequestMapping(value = {"/policy/memberupload/process"}, method = {RequestMethod.GET, RequestMethod.POST})
public String ProcessMemberUpload(HttpServletRequest session, @ModelAttribute("idPolicy") String idPolicy
,@ModelAttribute("fileName") String fileName, @ModelAttribute("listError") List<ErrorData> listError, Model model) {
try {
// code here
} catch (SQLException exq) {
// code here
}
}
Однако, когда метод вызывается с помощью кнопки «Загрузить процесс» (см. Код html), у меня есть следующее ошибка:
2020-02-26T13:30:37.435+0700 ERROR Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface java.util.List] with root cause. java.lang.NoSuchMethodException: java.util.List.<init>()
если я удалил @ModelAttribute ("listError"), ошибки не будет.
И я также попробовал следующее:
@RequestMapping(value = {"/policy/memberupload/process"}, method = {RequestMethod.GET, RequestMethod.POST})
public String ProcessMemberUpload(HttpServletRequest session, @ModelAttribute("idPolicy") String idPolicy
,@ModelAttribute("fileName") String fileName, @ModelAttribute("listError") ArrayList<ErrorData> listError, Model model) {
try {
// code here
} catch (SQLException exq) {
// code here
}
}
Не выдает ошибку, но listError.size () равен 0. Я совершенно уверен, что в списке есть данные.
Это файл html:
<form class="form-horizontal" th:action="@{/policy/memberupload/process}" method="post">
<div class="row">
<div class="col-md-12">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">
VALIDATION RESULT
</h3>
</div>
<!-- /.box-header -->
<div class="box-body">
<div class="content-grid">
<input type="hidden" th:value="${idPolicy}" name="idPolicy" id="idPolicy">
<input type="hidden" th:value="${fileName}" name="fileName" id="fileName">
<input type="hidden" th:value="${listMember}" name="listMember" id="listMember">
<div class="table_overflow">
<table class="table table-bordered chubb" id="tblRenewalPolicy">
<thead>
<tr>
<th style="min-width:100px;">Row Number</th>
<th style="min-width:100%;">Data Error</th>
</tr>
</thead>
<tbody>
<tr th:each="item: ${listError}">
<td th:text="${item.getCode()}"/>
<td th:text="${item.getMessage()}"/>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-info chubb_primary">
Process Upload
</button>
<uc th:replace="usercontrols/ucBtnBack :: btn('/policy/memberupload?id=' + ${idPolicy}, 'Back')"/>
</div>
</div>
</form>
Я не знаю, что не так. Любые идеи, чтобы это исправить?