У меня есть прецедент, когда мне нужно вернуть PDF файл пользователю, который создан для нас. Кажется, что мне нужно сделать, это использовать ResponseEntity в этом случае, но у меня есть несколько вещей, которые не очень понятны.
- Как я могу перенаправить пользователя - допустим, что у них нет прав доступа к этой странице? Как я могу перенаправить их на отдельный контроллер?
- Можно ли установить кодировку ответа?
- Могу ли я достичь любого из этих двух, не введя HttpResponse в качестве параметра в мою RequestMapping?
Я использую Spring 3.0.5. Пример кода ниже:
@Controller
@RequestMapping("/generate/data/pdf.xhtml")
public class PdfController {
@RequestMapping
public ResponseEntity<byte []> generatePdf(@RequestAttribute("key") Key itemKey) {
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.valueOf("application/pdf"));
if (itemKey == null || !allowedToViewPdf(itemKey)) {
//How can I redirect here?
}
//How can I set the response content type to UTF_8 -- I need this
//for a separate controller
return new ResponseEntity<byte []>(PdfGenerator.generateFromKey(itemKey),
responseHeaders,
HttpStatus.CREATED);
}
Мне бы очень хотелось не отвлечься от ответа... Ни один из моих контроллеров не сделал этого до сих пор, и мне бы очень хотелось, чтобы он его вообще приносил.