Ошибка привязки данных Spring MVC - PullRequest
0 голосов
/ 09 августа 2011

Я получаю следующую ошибку при попытке получить результаты формы в методе контроллера:

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 ошибка Ошибка поля в объекте «поиск» в поле «клиенты»: отклоненное значение [14]; коды [typeMismatch.search.clients, typeMismatch.clients, typeMismatch.java.util.List, typeMismatch]; аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [search.clients, клиентов]; аргументы []; сообщение по умолчанию [клиенты]]; сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'java.util.List' для свойства 'clients'; вложенное исключение: java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [com.Client] для свойства 'clients [0]': не найдено подходящих редакторов или стратегии преобразования]

Объект модели выглядит так:

 public class SearchForm {
     private String name;
     private List<Client> clients;
     //getters and setters
 }
 public class Client {
     private String name;
     private Int id;
 }

Форма:

<form:form method="POST", name="searchresults.html" modelattibute="search">
   <form:input path="name"/>
   <form:checkboxes path="clients" items="{clientsList}" itemsValue="id" itemsLabel="name"/>
</form:form>

эта форма правильно отображает значения на html-странице, но когда я нажимаю кнопку отправки, я получаю вышеуказанную ошибку

1 Ответ

2 голосов
/ 09 августа 2011

Браузер будет отправлять список идентификаторов клиентов только при отправке формы.Как Spring может знать, как преобразовать каждый идентификатор в экземпляр клиента.Вы должны либо указать ему, как это сделать, либо добавить свойство List<String> clientIds к своему компоненту, и заставить тег form:checkboxes использовать это свойство вместо clients в качестве пути.

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