我有一个超级英雄模型对象,其中包含一系列权力:
英雄模特
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>