0

Как правильно использовать Spring MVC 3.2.3 с помощью bootstrap selectpicker?Spring MVC + bootstrap-select multiple

Я создаю selectpicker в JSP:

<form:form role="form" id="orgForm" commandName="orgDto" > 
... 
<form:select id="affOrgId" class="form-control selectpicker" path="affOrgIds" itemValue="id" multiple="true" items="${organizations}" itemLabel="label"/> 

и активировать его в ЯШАХ:

$('.selectpicker').selectpicker(); 

Вот мой метод обработчика формы заголовок в классе контроллера:

@RequestMapping(value = "/{id}", method = RequestMethod.PUT) 
public @ResponseBody 
OrganizationDto updateOrganization(@PathVariable Long id,@Valid @RequestBody OrganizationDto org) { 

I судимым для привязки выбранных значений выбора к List<String> и List<Integer> в модуле эль-класс (OrganizationDto):

private List<String> affOrgIds; 

Когда я выбираю несколько значений в selectpicker и отправить форму я получаю исключение:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token 
at [Source: [email protected]; line: 1, column: 205] (through reference chain: com.org.OrganizationDto["affOrgIds"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token 

И в инструментах разработчика Chrome в JSON Request Payload есть только один значение:

affOrgIds:"48" 

(Также есть несколько странных полей в json: _affOrgIds: «1». Что это)

Я создаю этот JSON в JS так:?

var dataObj = $form.serializeJSON(); 

, а затем создать PUT запрос по $.ajax() метода. Когда я отладка он есть в dataObj

affOrgIds:"48" Так как связать Spring MVC с начальной загрузкой selectpicker представить несколько выбранных значения?

UPD: Я подозреваю, что serializeJSON() работает неправильно в этой ситуации, и я должен создать JSON по-другому.

ПОСТАНОВИЛИ: добавил dataObj.affOrgIds = $form.find('#affOrgId').val();

+0

Я не понимаю, откуда этот «JSON». вы используете '@ RestController'? – sedooe

+0

Извините, забыл написать это ... Обновлено ... – kostepanych

+0

Вы должны либо ответить на свой вопрос, либо закрыть этот вопрос, если он будет разрешен. –

ответ

0

$ form.serializeJSON() работает не корректно для самозагрузки-selectpicker. Чтобы получить значения selectpicker, я использую $ form.find ('# affOrgId'). Val();