Spring 3:选择值以枚举值映射

时间:2012-02-20 21:24:31

标签: spring enums mapping

我有一个非常简单的场景要处理。创建枚举以表示用于选择控件的一组选项。 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 [-];

1 个答案:

答案 0 :(得分:2)

为什么必须将选项映射到“ - ”?它不能只是一个空字符串吗?

在这种情况下,我认为最简单的解决方案是:

<option value="">Select Value</option>

@RequestMapping("userIndex")
public void resetFilter(@RequestParam(required = false) UserAccessLevel filterUserAccessLevel) {
...
}