首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring绑定逗号分隔列表到多选择

Spring绑定逗号分隔列表到多选择
EN

Stack Overflow用户
提问于 2010-09-07 21:47:53
回答 1查看 3.3K关注 0票数 2

tl;博士:我有一个自定义对象,它不是集合。如何让Spring将其绑定到多个选择?

我有一个对象Field,它包含一个名为value的字段,它是一个带有getter和setter的字符串。有时,value字段包含一个值,这些值将显示在文本框中。其他时候,value字段将包含逗号分隔的列表,需要在多个选择框中显示。

我有这些字段的映射(例如,我得到的{"MY_MULTI_FIELD", Field.class}如下所示:

文本

代码语言:javascript
复制
  <form:input maxlength="200" path="fields[MY_TEXT_FIELD]" disabled="${springIsDisabled}" />

多重选择

代码语言:javascript
复制
<form:select cssClass="required" path="fields[MY_MULTI_FIELD]" items="${blah}" size="5" multiple="true" disabled="${springIsDisabled}" />

我在我的控制器中注册了一个FieldEditor

代码语言:javascript
复制
binder.registerCustomEditor(Field.class, new FieldEditor());

看上去像这样

代码语言:javascript
复制
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);
  }

}

在我只有一个文本字段的情况下,效果很好。另外,如果只选择了多个选择框中的一个项,它就可以正常工作。

问题是当我们从多个选择框中选择多个项目时。当我们在保存后查看表单时,它看起来不像是从multiselect中选择了任何值。getAsText()返回逗号分隔的字符串,当然它不匹配任何一个选项值的值,而是几个选项值的组合。

例如,如果我们选择

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

value字段是"test,test2“。

如何让Spring理解如果选项值包含在逗号分隔的字符串中,那么应该选择它。

EN

回答 1

Stack Overflow用户

发布于 2010-09-08 04:48:52

我认为模型对象Field没有正确的结构来进行多个选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3663027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档