2013-06-25 4 views
1

Я разрабатываю веб-проект, используя весенний mvc и dojo. У меня есть уникальная проблема. Это то, что я делаю:динамически задает цель формы iframe условно

  1. Отправить форму контроллеру и создать pdf-файл в контроллере. Установите pdf в ответе
  2. Целью формы является iframe, чтобы PDF-файл показывался в форме после отправки.

Это работает отлично. Теперь, моя проблема:
Я делаю проверки в форме с помощью весеннего mvc-валидатора, и если есть ошибка, я должен вернуться на ту же страницу с сообщением об ошибке. Проблема заключается в объединении этих двух подходов. Если я найду ошибку и вернусь с представлением возврата, так как целью формы является iframe, ответ будет показан в iframe, который, очевидно, я не хочу (я хочу показать новую страницу), и если все будет хорошо , Я должен установить PDF в ответе и показать его в iframe, используя цель. Как я могу это достичь?

ответ

0

Вы не указали, используете ли вы ajax для отправки form. Если бы его ajax, то это было бы прямо, я думаю, что вы не.

Если вы делаете нормальный form представить, то

  1. Не target форма представить на iframe.

    Это решение проблемы, но оно вводит новый, обрабатывая ответ PDF.

  2. Когда представление формы проходит validation вместо возвращения PDF возвращение того же view, но с некоторым javascript кодом, dojo в вашем случае, в нижней части страницы, чтобы всплывать iframe которого url указывает на поток PDF.

    Если вы используете Spring MVC 3.1 вы можете использовать Spring MVC Flash Attributes, чтобы обмениваться любые данные между вашим методом обработки форм и PDF методом служащей, если вы используете предыдущие версии Spring вы можете использовать Session или захватить информацию в redirect URL для делиться любой информацией между этими двумя методами.

+0

Спасибо. Я попробую это. Не могли бы вы дать мне некоторую информацию о том, какой код додзё я могу написать и в каком месте.Мне трудно найти местозаполнитель, чтобы показать всплывающее окно (dijit dialog), которое выполняется после загрузки полной страницы. Я поставил его в конце dojo.ready, но он все еще выполняется до загрузки некоторой части страницы, что вызывает некоторые проблемы. – Abby

+0

Извините, я не знаю 'dojo'. В идеале вы можете привязать свой код к 'document.onLoad', если это вызывает некоторые проблемы в вашем коде, тогда лучшим шансом является включение тега'

0

Если вы можете использовать AJAX:

Отправить форму с помощью AJAX и возвращает URI для PDF. Затем установите источник iframe в возвращаемый URI, если проверка была в порядке.

Если нет или не хотят использовать AJAX можно:

Возвратите же страницу снова, но на этот раз с источником iframe уже установлен в формате PDF, если проверка была в порядке.