2013-06-26 2 views
1

Я пытаюсь разработать способ предоставления CSV-загрузки через портсет 3-й весны. У меня есть метод, который использует аннотацию @ResourceMapping для определения обработчика, который принимает некоторые параметры отчета в виде @ModelAttribute, строит отчет и возвращает его. Захват-22, на котором я запущен, проверяет параметры, отправляемые из клиентской формы.Перенаправление обратно в портлет из ResourceMapping весной 3 портлетов

Если я обработчик @ResourceMapping, я могу установить заголовки и написать отчет, как с помощью ResourceResponse, но я не могу показаться, чтобы выяснить, как перенаправить пользователя к просмотру портлетов с ошибками при их вход не прошел проверку. Однако, если я сделаю это @ActionMapping, я смогу затем проверить BindingResult и отправить их обратно в форму по мере необходимости, но ActionResponse не позволяет мне устанавливать заголовок Content-Disposition и не выписывать байты CSV, что что-то важное для отправки отчета.

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

ответ

0

Предлагаю вам использовать как @ActionMapping, так и @ResourceMapping в соответствии с вашими требованиями.

Как вы сказали, вы смогли обработать ошибки validation, используя @ActionResponse, я расскажу вам, как обращаться с Resource Streaming.

Как вы знаете, каждый @ActionResponse сопровождается @RenderResponse, просто возвращают один и тот же вид, но со скрытым iframe это время которого src указывает на ResourceURL.

Теперь Request вы получаете в @ResourceMapping что-то уже Validated. Итак, теперь вы можете подавать свои CSV.

Я не знаю, насколько сложным является ваш UI, и если вы используете jsp как views в своем приложении. Если хорошо управляется, Validation может обрабатываться @ResourceMapping.

Спасибо

+0

Я даю вам кивок, поскольку это хорошее решение. Однако я выбрал другой способ использования AJAX-вызова для проверки, затем после проверки ввода сделайте еще один вызов AJAX для получения CSV. Но iframe была идеей, о которой я не думал. – CodeChimp