Spring @ModelAttribute не заботится о commandName

JSP:

<form:form commandName="editWeather" method="post" action="../edit">
    <!-- Input fields -->
    <input type="submit" value="Submit">
</form:form>

И вот как я получаю модель весной:

@ModelAttribute("DONTGIVEADAMN") Weather weather

И я все еще могу использовать weather для выполнения своих операций, и он отлично работает, например:

weatherService.editWeather(weather);

Мой вопрос... Почему это работает?


person Jaanus    schedule 25.09.2011    source источник


Ответы (2)


Имя атрибута модели не имеет значения при привязке данных, полученных из формы (поскольку имена полей формы соответствуют именам полей объекта модели), оно имеет значение только при отрисовке формы.

В частности, когда имя атрибута модели в вашем методе обработчика POST не соответствует commandName в форме, вы сможете получить данные, но не сможете повторно отобразить форму с ошибками проверки.

person axtavt    schedule 25.09.2011

его соответствие типу класса (или интерфейсу), а не имени переменной/параметра; и указанная подпись отображения/метода запроса должна быть правильной.

person NimChimpsky    schedule 25.09.2011