Spring MVC привязывает разделенный запятыми список к множественному выбору - PullRequest
2 голосов
/ 08 сентября 2010

tl; dr : У меня есть пользовательский объект, который не является коллекцией.Как я могу заставить Spring привязать его к множественному выбору?

У меня есть объект Field, который содержит поле с именем value, которое является строкой, с геттерами и сеттерами.Иногда поле value содержит одно значение, и оно будет отображаться в текстовом поле.В других случаях поле value будет содержать список, разделенный запятыми, и его нужно отобразить в поле множественного выбора.

У меня есть карта этих полей (например, {"MY_MULTI_FIELD", Field.class}, которую я получаю следующим образом:

Текст

  <form:input maxlength="200" path="fields[MY_TEXT_FIELD]" disabled="${springIsDisabled}" />

Multiselect

<form:select cssClass="required" path="fields[MY_MULTI_FIELD]" items="${blah}" size="5" multiple="true" disabled="${springIsDisabled}" />

У меня есть FieldEditor, который я регистрирую в моем контроллере

binder.registerCustomEditor(Field.class, new FieldEditor());

, который выглядит следующим образом

public class FieldEditor extends PropertyEditorSupport {

  @Override
  public String getAsText() {
    Field field = (Field) getValue();
    return field.getValue();
  }

  @Override
  public void setAsText(String text) throws IllegalArgumentException {
    setValue(text);
  }

}

Случай, когда у меня просто текстовое поле, работает отлично. Также, если выбран только один элемент из поля множественного выбора, он работает нормально.

Проблема заключается в том, что мы выбираем несколько элементов из поля множественного выбора. Когда мы просматриваем форму после сохранения, она не выглядит так, как будто какие-либо значения были выбраны из множественного выбора. Метод getAsText () возвращает строку, разделенную запятыми, которая изкурс не соответствует значению какого-либо одного из значений параметра, а представляет собой комбинацию нескольких из них.

Например, если мы выберем

<option value="test">Test</option> <option value="test2">Test2</option>

поле value - "test, test2".

Как я могу заставить Spring понять, что если значение параметра содержится в строке через запятую, то его следует выбрать?

1 Ответ

1 голос
/ 08 сентября 2010

Я не думаю, что объект модели Field имеет правильную структуру для множественного выбора.

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