31

有一个选择下拉列表,我想将“无选择”项目添加到列表中,提交时应该给我“空”。我正在使用 SimpleFormController 派生控制器。

protected Map referenceData(HttpServletRequest httpServletRequest, Object o, Errors errors) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();

    map.put("countryList", Arrays.asList(Country.values()));

    return map;
}

而 jspx 部分是

<form:select path="country" items="${countryList}" title="country"/>

一种可能的解决方案似乎是在列表的开头添加一个空值,然后使用自定义 PropertyEditor 将此“空”显示为“无选择”。有更好的解决方案吗?

@Edit:我已经通过自定义验证注释解决了这个问题,该注释检查所选值是否为“无选择”。有没有更标准、更简单的解决方案?

4

2 回答 2

41

一种选择:

<form:select path="country" title="country" >
     <form:option value="">&nbsp;</form:option>
     <form:options items="${countryList}" />
</form:select>
于 2008-10-05T00:37:11.497 回答
1

我认为您不需要为此使用属性编辑器。如果“空白”选项是列表中的第一个选项,并且输出列表的标记没有将它们中的任何一个标记为选中,那么浏览器应该自动选择第一个“空白”选项。

当您提交表单时,请尝试使用它,以便将“空白”值作为空值绑定到您的命令,这可能会自动发生,具体取决于类型。

于 2008-10-06T07:19:22.277 回答