如何将ENUM绑定到radiobutton?

时间:2010-08-13 15:08:12

标签: java spring jsp spring-mvc

Type 是对象中的枚举属性。

JSP:

<form:radiobutton path="type" value="Male" />

的java:

public enum TestType
{
    Male, Female;
}

并收到错误

无法将类型'java.lang.String'中的值'Male'转换为'java.lang.Enum'类型; reason ='java.lang.Enum不是枚举类型'

3 个答案:

答案 0 :(得分:7)

可以在spring forum找到更简单的解决方案,无需任何自定义绑定。

答案 1 :(得分:4)

执行以下操作

public enum TestType {

    MAN("Man"),
    FEMALE("Female");

    private String description;

    private TestType(String description) {
        this.description = description;
    }

    public String getValue() {
        return name();
    }

    public void setValue(String value) {}

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

}

按如下方式注册自定义活页夹

dataBinder.registerCustomEditor(TestType.class, new PropertyEditorSupport() {
        @Override
        public void setAsText(String value) throws IllegalArgumentException {
            if(StringUtils.isBlank(value))
                return;

            setValue(TestType.valueOf(value));
        }

        @Override
        public String getAsText() {
            if(getValue() == null)
                return "";

            return ((TestType) getValue()).name();
        }
    });

然后

<form:radiobuttons path="type" items="${testTypeList}" itemLabel="description"/>

您可以按如下方式设置TestType

 model.addAttribute(TestType.values());

答案 2 :(得分:0)

也许,命令对象的type属性被声明为Enum而不是TestType