java - 如何将 ENUM 绑定(bind)到单选按钮?

标签 java spring jsp spring-mvc

类型是对象中的枚举属性。

jsp:

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

Java:

public enum TestType
{
    Male, Female;
}

出现错误

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

最佳答案

如下操作

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;
    }

}

并按如下方式注册自定义 Binder

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());

关于java - 如何将 ENUM 绑定(bind)到单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478177/

相关文章:

java - 以整数数组作为参数并返回字符串的静态方法

java - org.gradle.tooling.BuildException : Failed to process resources, 有关详细信息,请参阅上面的 aapt 输出

java - Apache Hama 适合构建决策树吗?

java - spring thymeleaf 将属性传递给选项卡

java - 在 AuthenticationProvider 中使用 Autowired 时出错

java - 实体管理器工厂名称已注册

java代码无法在JSP中运行

java - 为什么 pageContext.request.contextPath 被视为字符串而不是类路径?

java - 从客户端到服务器的请求,其中包含来自 <form> 元素和 struts 2 中的 javascript 的数据

java - 匿名可运行和内存泄漏