2013-06-26 6 views
1

Spring 3 포틀릿을 통해 CSV 다운로드를 제공하는 방법을 찾으려고합니다. @ResourceMapping 주석을 사용하여 @ModelAttribute 형태의 보고서 매개 변수를 취하고 보고서를 작성한 핸들러를 정의하는 메소드가 있습니다. catch-22는 클라이언트 양식에서 전송되는 매개 변수의 유효성을 검사합니다.Spring 3 포틀릿에서 ResourceMapping으로 포틀릿으로 다시 리디렉션

핸들러를 @ResourceMapping으로 만들면 머리말을 설정하고 ResourceResponse을 사용하여 보고서를 작성할 수는 있지만 사용자가 포틀릿 뷰로 다시 리디렉션하는 방법을 알아낼 수 없습니다. 입력이 유효성 검사에 실패했습니다. 그러나 @ActionMapping으로 만들면 BindingResult을 확인한 다음 필요에 따라 양식으로 다시 전달할 수 있지만 ActionResponse은 Content-Disposition 헤더를 설정하거나 CSV 바이트를 쓸 수 없습니다. 보고서를 다시 보내기 위해 중요합니다.

내 옵션이 무엇인지 알지 못하기 때문에 여기를 완전히 잃어 버렸습니다. 포틀릿을 사용하여 수행하려는 작업을 수행 할 수 있습니까? 가능한 해결 방법을 찾을 수있는 다른 예가 있습니까?

답변

0

귀하의 요구 사항을 충족시키기 위해 @ActionMapping@ResourceMapping을 모두 사용하시기 바랍니다.

@ActionResponse을 사용하여 validation 오류를 처리 할 수 ​​있다고 말한대로 Resource Streaming을 처리하는 방법을 알려 드리겠습니다. 당신이 모든 @ActionResponse@RenderResponse 뒤에 알다시피

, 단지 그 ResourceURL-src 점 숨겨진 iframe이 시간, 같은 뷰를 반환하지만.

@ResourceMapping에 수신 된 Request은 이미 Validated입니다. 이제 CSV에 서비스를 제공 할 수 있습니다.

UI은 얼마나 복잡하고 jspviews으로 응용 프로그램에서 사용하고 있는지 알 수 없습니다. 멋지게 관리하는 경우 @ResourceMapping으로 Validation을 처리 할 수 ​​있습니다.

고맙습니다.

+0

나는 이것이 좋은 해결책이므로 고개를 줄 것입니다. 그러나 AJAX 호출을 사용하여 유효성을 검사하는 다른 경로를 선택한 다음 입력의 유효성을 검사 할 때 다른 AJAX 호출을 만들어 CSV를 가져옵니다. 그러나 iframe은 제가 생각하지 못한 아이디어였습니다. – CodeChimp