Spring mvc select from enum - 选择值问题

时间:2013-01-17 10:41:02

标签: spring-mvc

我正在尝试使用带有ENum值的spring mvc form select。我不能把所选的值。

这是Enum:

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类的无效属性“SL”[com.sapiens.alis.updater.domain.enums.MessagesType]:Bean属性“SL”不可读或具有无效的getter方法: getter的返回类型是否与setter的参数类型匹配?

请帮助......

感谢Idob

1 个答案:

答案 0 :(得分: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>

这将让您了解如何实现目标。