Spring MVC form: ошибки при использовании Ajax - PullRequest
5 голосов
/ 17 мая 2011

У меня есть вопрос, связанный с Spring 3 MVC, Ajax и формой: ошибки.

У меня есть форма, которую я отправляю на сервер, и я использую Spring MVC. У меня есть все проверки, контроллеры и т. Д. Настроены и работают нормально. Когда я отправляю данные, которые не проходят проверку, я получаю сообщение об ошибке, которое возвращается в форму согласно моей форме: теги ошибок в моем jsp.

Мой вопрос ...

Если я хочу перейти на Ajax-подход, могу ли я по-прежнему использовать всю инфраструктуру "обычного" Spring MVC-приложения (то есть, в частности, средства проверки и функции form: errors) для возврата ошибок а отображается в браузере? Я вижу, как отправлять запросы Ajax, но я не вижу, как (или если) я все еще могу использовать форму: возможность ошибок JSP.

Кто-нибудь знает, можно ли это сделать, и если да, то укажите мне соответствующее общее направление?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 17 мая 2011

Я использовал довольно много AJAX при отправке форм в Spring. По сути, я создал файл form.jsp, который затем возвращаю из вызова AJAX. Поскольку AJAX вернет всю форму со всеми доступными тегами формы, я получаю все преимущества от проверки на стороне сервера.

Итак, если у меня есть страница, содержащая форму, я мог бы, например, иметь div, который действует как контейнер формы

<div id="form-container">
    <form id="myform">
        Normal form here ...
    </form>
</div>

И когда я отправляю форму, я могу загрузить form.jsp, используя jQuery, например,

$('#myform').submit(function() {
    $('#form-container').load('ajax/somehandler');
});

Итак, все, что вам нужно сделать, это вернуть form.jsp из контроллера со всеми обычными привязками, как если бы вы использовали подход без AJAX. Вы поняли?

6 голосов
/ 17 мая 2011

Вы не можете, поскольку теги типа <form:errors> оцениваются на стороне сервера и встраивают сообщения об ошибках / элементы в HTML-содержимое HTTP-ответа.Поскольку AJAX-запрос к серверу обычно возвращает XML или JSON к ответу (а не HTML), который затем анализируется клиентским JavaScript, нет никакой точки, в которой Spring может связываться с запросом / формой и добавлять сообщения об ошибках всодержание.

5 голосов
/ 17 мая 2011

Не совсем, нет.Тег form:error делает свое дело, когда страница впервые генерируется на стороне сервера.Если вы не создаете заново страницу сервера, потому что вы использовали ajax, ничего из этого не запустится.Сам объект Errors не может быть возвращен клиенту.Вы могли бы сериализовать это в JSON, я полагаю, но там очень много вещей, которые вам не нужны.Плюс, конечно, на нем обычно есть только коды, а не реальные сообщения, и ему нужен источник сообщений для поиска переводов.

Суть в том, что вам нужно будет отправлять ошибки вручную и обрабатывать установку сообщений об ошибках.вы сами в javascript, когда получите ответ ajax.

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