Ответ 1
Один вариант:
<form:select path="country" title="country" >
<form:option value=""> </form:option>
<form:options items="${countryList}" />
</form:select>
Существует раскрывающийся список выбора, и я хочу добавить элемент "Без выбора" в список, который должен дать мне "null" при отправке. Я использую контроллер 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 для этого "null" как "Без выбора". Есть ли лучшее решение?
@Edit: Я решил это с помощью специальной аннотации проверки, которая проверяет, выбрано ли выбранное значение "Нет выбора". Есть ли более стандартное и более легкое решение?
Один вариант:
<form:select path="country" title="country" >
<form:option value=""> </form:option>
<form:options items="${countryList}" />
</form:select>
Я не думаю, что для этого вам понадобится редактор свойств. Если параметр "пустой" является первым в списке, а тег, который выводит список, не выделяет ни один из них, как выбранный, то браузер должен автоматически выбрать первый "пустой".
При отправке формы попробуйте выполнить ее так, чтобы "пустое" значение привязано к вашей команде как нуль, что может произойти автоматически, в зависимости от типа.