使用Spring表单和多个选项绑定对象列表

时间:2017-06-19 23:02:46

标签: java spring jsp spring-mvc

我有一个超级英雄模型对象,其中包含一系列权力:

英雄模特

public class Hero {

    private int id;
    private String name;
    private String alignment;
    private List<Power> powers;
    private List<Organization> organizations;

权力模型

public class Power {

    private int id;
    private String description;

我将数据库中的所有权力发送到我的JSP,并创建一个Spring表单,用户可以为其英雄选择0-n权限。但是,英雄对象将返回null权限。

JSP表单

<sf:select class="form-control" id="create-powers" path="powers" multiple="true" items="${allPowers}">
    <sf:options  items="${allPowers}" itemValue = "description"/>
 </sf:select>

我在Stack Overflow上尝试了所有版本的答案,但似乎没有任何效果。我甚至尝试过自定义集合创建者,但不确定它是否正确,或者我是如何/为什么需要它:

`@InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(Power.class, new Editor(service));
}

public class Editor extends PropertyEditorSupport {

    private final SuperHeroServiceLayer service;

    public Editor(SuperHeroServiceLayer service) {
        this.service = service;
    }

    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        try {
            Power power = service.getPowerById(Integer.parseInt(text));
            setValue(power);
        } catch (InvalidSelectionError e) {

        }

    }
}`

有关如何让用户从权力中选择多个选项的任何建议,并创建List并将hero.powers设置为与其他英雄创建相同的形式的列表(名称和对齐工作正常)。< / p>

0 个答案:

没有答案