Spring ResponseEntity

У меня есть вариант использования, когда мне нужно вернуть пользователю PDF-файл, созданный для нас. Похоже, что в этом случае мне нужно использовать ResponseEntity, но у меня есть пара вещей, которые не очень ясны.

  1. Как я могу перенаправить пользователя - давайте представим, что у него нет разрешений на получить доступ к этой странице? Как я могу перенаправить их на отдельный контроллер?
  2. Могу ли я установить кодировку ответа?
  3. Могу ли я добиться любого из этих двух, не добавляя 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);
    }

Мне бы очень хотелось не вводить ответ ... Ни один из моих контроллеров до сих пор этого не сделал, и я бы не хотел, чтобы он вообще его вводил.

13
задан Scott 21 July 2011 в 20:50
поделиться