tl;博士:我有一个自定义对象,它不是集合。如何让Spring将其绑定到多个选择?
我有一个对象Field
,它包含一个名为value
的字段,它是一个带有getter和setter的字符串。有时,value
字段包含一个值,这些值将显示在文本框中。其他时候,value
字段将包含逗号分隔的列表,需要在多个选择框中显示。
我有这些字段的映射(例如,我得到的{"MY_MULTI_FIELD", Field.class}
如下所示:
文本
<form:input maxlength="200" path="fields[MY_TEXT_FIELD]" disabled="${springIsDisabled}" />
多重选择
<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);
}
}
在我只有一个文本字段的情况下,效果很好。另外,如果只选择了多个选择框中的一个项,它就可以正常工作。
问题是当我们从多个选择框中选择多个项目时。当我们在保存后查看表单时,它看起来不像是从multiselect中选择了任何值。getAsText()返回逗号分隔的字符串,当然它不匹配任何一个选项值的值,而是几个选项值的组合。
例如,如果我们选择
<option value="test">Test</option> <option value="test2">Test2</option>
value
字段是"test,test2“。
如何让Spring理解如果选项值包含在逗号分隔的字符串中,那么应该选择它。
发布于 2010-09-07 20:48:52
我认为模型对象Field
没有正确的结构来进行多个选择。
https://stackoverflow.com/questions/3663027
复制相似问题