У меня есть случай, когда мне нужно вернуть 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);
}
Я бы действительно не хотел выдвигать Ответ ... Ни один из моих контролеров не сделал этого до сих пор, и я не хотел бы, чтобы его вообще вводили.