Форма пружины MVC 3 переплетная - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть простая форма HTML:

<form id="marketplaceForm" enctype="multipart/form-data" method="post">
<select name="category">
    <option selected ></option>
    <option value="Sales">Sales</option>
    <option value="Marketing" >Marketing</option>
</select>
<textarea type="text" id="marketplaceDesc" name="description" value="" class="creattbleArea"></textarea>
<input type="text" id="marketplaceName" name="templateName" >
<input type="file" id="marketplaceLogo" name="logo">
<input type="submit" value="Save" id="update" />
<input type="text" id="marketplacePrice" name="price">
</form>

Мне нужно автоматически связать эту форму при ее отправке. Это отлично работает:

@RequestMapping(value = "/.....", method = RequestMethod.POST)
public String PublishForm() {        

Но это выдает следующую ошибку:

HTTP Status 400 - Запрос, отправленный клиентом, был синтаксически неверным

@RequestMapping(value = "/PublishApplication.htm", method = RequestMethod.POST)
public String PublishForm(@RequestParam("templateName") String templateName,
                           @RequestParam("category") String category,
                           @RequestParam("price") String price,
                           @RequestParam("description") String description
                           ) {

Может ли кто-нибудь мне помочь?

Обновление: Я обнаружил, что если я удаляю enctype="multipart/form-data" из формы HTML, это работает. Теперь мой вопрос: как заставить это работать с enctype="multipart/form-data".

Ответы [ 2 ]

7 голосов
/ 23 сентября 2011

Я думаю, что вы можете пропустить Multipart resolver из вашей конфигурации.

У вас есть что-то подобное в вашей конфигурации?официальная весенняя документация по этому вопросу.

1 голос
/ 23 сентября 2011

Прежде всего, убедитесь, что привязка к PublishApplication.htm действительно работает. Вы используете это отображение в вашем контроллере, но вы не указали его в action параметре тега <form>. Таким образом, вы можете в конечном итоге отправить форму на другой контроллер, и сервер отклонит ваш запрос. Конечно, этого не произойдет, если вы используете один и тот же контроллер для отображения и отправки формы, и вы применили аннотацию RequestMapping на уровне класса.

Есть еще одна проблема с вашим контроллером. Вы не указываете logo как @RequestParam в методе PublishForm. Я не уверен, что это не испортило форму автосвязывания. Если я правильно помню, эти параметры обязательны по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...