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 - 使用eclipse使用ssh连接到远程机器[linux服务器]

java - Java 中的日志记录是怎么回事?

java - 读取 Hibernate 实体标识值

java - 为什么组件扫描不适用于 Spring Boot 单元测试?

java - Thymeleaf 条件图像在条件下插入

java - 为什么多个 PropertyPlaceholderConfigurer 不起作用?

mysql - Spring 存储库中的自定义查询

java - 防止 mozilla session 恢复

java - Spring MVC JSTL预选列表

java - 是否可以使用Java后端制作浏览器游戏?