Ошибка при попытке получить значение @ModelAttribute типа List <Model>при весенней загрузке thymeleaf - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующий код для доступа к атрибуту модели в 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>

Я не знаю, что не так. Любые идеи, чтобы это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...