【问题标题】:Spring MVC Form tags: Is there a standard way to add "No selection" item?Spring MVC 表单标签:是否有添加“无选择”项的标准方法?
【发布时间】:2010-09-14 19:39:03
【问题描述】:

有一个选择下拉菜单,我想将“无选择”项目添加到列表中,提交时应该给我“空”。 我正在使用 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:我已经使用自定义验证注释解决了这个问题,该注释检查所选值是否为“无选择”。有没有更标准、更简单的解决方案?

【问题讨论】:

    标签: java forms spring spring-mvc


    【解决方案1】:

    一个选项:

    <form:select path="country" title="country" >
         <form:option value="">&nbsp;</form:option>
         <form:options items="${countryList}" />
    </form:select>
    

    【讨论】:

    • 注意在 jspx 页面中使用命名实体 &amp;nbsp; (这对我来说最近导致错误,说明实体未定义,或类似的)。通过代码引用不间断空间似乎更安全:&amp;#160;
    • 这样,NoSelection 将发布一个空字符串,而不是'null'。 value=${null} 应该发布 null。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 2012-02-14
      • 2010-10-16
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多