Spring MVC Form tags: Is there a standard way to a

2020-02-26 03:35发布

There is a select dropdown and I want to add "No selection" item to the list wich should give me 'null' when submitted. I'm using SimpleFormController derived controller.

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;
}

And the jspx part is

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

One possible solution seems to be in adding a null value to the beginning of the list and then using a custom PropertyEditor to disply this 'null' as 'No selection'. Is there a better solution?

@Edit: I have solved this with a custom validation annotation which checks if the selected value is "No Selection". Is there a more standard and easier solution?

2条回答
女痞
2楼-- · 2020-02-26 03:39

One option:

<form:select path="country" title="country" >
     <form:option value="">&nbsp;</form:option>
     <form:options items="${countryList}" />
</form:select>
查看更多
太酷不给撩
3楼-- · 2020-02-26 04:01

I don't think you should need a property editor for this. If the "blank" option is first in the list, and the tag that outputs the list doesn't mark any of them as selected, then the browser should select the first, "blank" one automatically.

When you submit the form, try and work it so that the "blank" value is bound to your command as a null, which might happen automatically, depending on the type.

查看更多
登录 后发表回答