我有一个非常简单的场景要处理。创建枚举以表示用于选择控件的一组选项。 select控件需要有一个提示符映射到' - '作为提示值。相应的枚举没有此破折号。当提交页面时,选择控件仍然位于提示符处,则抛出异常。你是如何处理这种情况的?
网页:
<select id="filterUserAccessLevel" name="filterUserAccessLevel">
<option value="-">Select Value</option>
<option value="DEPOSITOR">Depositor</option>
<option value="READER">Reader</option>
<option value="AUTHOR">Author</option>
<option value="EDITOR">Editor</option>
<option value="ADMINISTRATOR">Administrator</option>
</select>
<input type="submit" name="resetFilter" value="<spring:message code="common.filterResetButtonLabel" />" />
UserAccessLevel枚举:
public enum UserAccessLevel {
DEPOSITOR("DEPOSITOR"),
READER("READER"),
AUTHOR("AUTHOR"),
EDITOR("EDITOR"),
ADMINISTRATOR("ADMINISTRATOR");
private String code;
private UserAccessLevel(String code) {
this.code=code;
}
public String getCode() {
return this.code;
}
}
控制器:
@RequestMapping(value="/userIndex/", method=RequestMethod.POST, params="resetFilter")
public void resetFilter(@ModelAttribute("userIndexBean") UserIndexBean bean, Model model) {
System.out.println("resetFilter()");
bean.resetFilterSection();
loadBean(1, bean, model);
}
例外:
Field error in object 'userIndexBean' on field 'filterUserAccessLevel': rejected value [-];
答案 0 :(得分:2)
为什么必须将选项映射到“ - ”?它不能只是一个空字符串吗?
在这种情况下,我认为最简单的解决方案是:
<option value="">Select Value</option>
@RequestMapping("userIndex")
public void resetFilter(@RequestParam(required = false) UserAccessLevel filterUserAccessLevel) {
...
}