我正在尝试使用带有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
答案 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>
这将让您了解如何实现目标。