spring MVC,包含摘要的List的数据绑定

时间:2013-07-18 22:51:11

标签: forms spring generics spring-mvc data-binding

我尝试绑定一个包含B,C对象的通用列表,这些对象是A对象。

@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public abstract class A<T> {

    @Column(name = "type", nullable = false, updatable = false, insertable = false)
    private String type;

    @Column(name = "value")
    private String value;

    // used to populate the value in the inner class
    public abstract void setCustomValue(T value);
}

@DiscriminatorValue("b")
public class B extends A<Integer>{
    public void setCustomValue(Integer value);
}

@DiscriminatorValue("c")
public class C extends A<Boolean>{
    public void setCustomValue(Boolean value);
}

这是速度模板和绑定形式:

公共类AForm {

    private List<A<?>> a;

    public AForm() {
            a = new ArrayList<A<?>>();
    }

    public AForm(List<A<?>> a) {
            super();
            this.a = a;
    }

}

<form action="#springUrl("....")" method="post">
...
#foreach($a in $aList.a)
        #set( $index = $velocityCount - 1 )
        <tr>
            <td>
            #springFormInput("aList.a[$index].type" "") 
            </td>
            <td>
            #springFormInput("aList.a[$index].customValue" "") 
            </td>
        </tr>   
#end
...
<input type="submit" value="Save"/>
</form>

但是当我保存表单时,spring会尝试实例化一个对象A而不是对象(B或C),具体取决于为表单中每个对象指定的类型。 我想我必须制作一个自定义绑定,但我不知道该怎么做。

感谢。

0 个答案:

没有答案