Spring 3 MVC: как сделать форму с разделенным запятыми набором строк - PullRequest
1 голос
/ 09 декабря 2011

Я совсем новичок в Spring 3, и я не знаю лучшего способа решить мою проблему.

У меня есть сущность Идея:

public class Idea {
    private Set<Tag> tags;
}

, который имеет несколько связанных тегов. Я хотел бы создать форму, в которой я могу дать разделенный запятыми список тегов в одном входе (вид такой же, как в stackoverflow). И мне нужен своего рода парсер, который разделяет строку с этими запятыми и добавляет каждый тег к идее. Как мне сделать это правильно?

Моя текущая форма такова:

<form:form modelAttribute="idea">
    <form:input path="tags" />
</form:form>

И текущий отображаемый текст на входе - «[]» (должен быть методом toString класса HashSet).

Кстати, я использую Spring 3.0.5, Hibernate и JSP.

Редактировать: Могу ли я создать специальный специальный класс:

public class IdeaForm {
    String tags;
}

А затем создать служебный класс, который отображает разделенные запятыми теги в Set?

Спасибо!

1 Ответ

2 голосов
/ 10 декабря 2011

Наконец использовал средство initBinder в моем контроллере:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(Set.class, new CommaDelimitedStringEditor());
}

И создал мой пользовательский редактор

public class CommaDelimitedStringEditor extends PropertyEditorSupport {

    public void setAsText(String text) {
        Set<Tag> tags = new HashSet<Tag>();
        String[] stringTags = text.split(", ");
        for(int i =0; i < stringTags.length; i++) {
            Tag tag = new Tag();
            tag.setName(stringTags[i]);
            tags.add(tag);
        }
        setValue(tags);
    }

}

...