1

我正在尝试使用带有 ENum 值的 spring mvc 表单选择。我不能输入选定的值。

这是枚举:

public enum MessagesType {

SL(4, 0, 9000000, 9999999), 
BL(1,2, 1000000, 1999999);

private Integer moduleCode;

private Integer subModuleCode;

private Integer rangeMin;

private Integer rangeMax;

    MessagesType(Integer moduleCode, Integer subModuleCode, Integer rangeMin, Integer rangeMax) {
        this.moduleCode = moduleCode;
        this.subModuleCode = subModuleCode;
        this.rangeMax = rangeMax;
        this.rangeMin = rangeMin;
    }

... (getters ans setters)

这是表单调用:

<td><form:label path="type">message type:</form:label></td>
                <td>
                    <form:select path="type"  items="${messagesTypes}" itemValue="${messageEditContextDto.type}" />
                </td>

messageEditContextDto 是一个模型 bean,它包含我需要的类型和一堆其他字段:

public class MessageEditContextDto implements Serializable {

    private MessagesType type;

    ... 
}

我得到这个异常: org.springframework.beans.NotReadablePropertyException:bean 类 [com.sapiens.alis.updater.domain.enums.MessagesType] 的无效属性“SL”:Bean 属性“SL”不可读或有无效的 getter方法:getter 的返回类型是否与 setter 的参数类型匹配?

请帮忙...

谢谢伊多布

4

1 回答 1

3

这就是您通常获取枚举值的方式。为简单起见,我正在稍微更改您的代码。

public enum MessagesType {
    SL("4"), 
    BL("2");

    private String value;

    private MessagesType(String theValue) {
        this.value = theValue;
    }

    public String getValue() {
        return this.value 
    }
}

表单调用:

    <td><form:label>message type:</form:label></td>
    <td>
          <form:select path="type">
              <!-- Characters edition-->
              <c:forEach var="item" items="${MessagesType.values}">
                  <form:option value="{item.value}"><spring:eval expression="item"/></form:option>
              </c:forEach>
          </form:select>
    </td>

这将使您对如何实现目标有所了解。

于 2013-01-17T16:05:57.583 回答