簡體   English   中英

Spring Web MVC:如何在視圖類而不是控制器中使用ResponseEntity?

[英]Spring Web MVC: How to use a ResponseEntity in the view class, not the controller?

使用Spring Web MVC,我想使用ResponseEntity將字節發送回客戶端。

例如,我可以這樣做:

@RequestMapping(value = "/getMyBytes", method = RequestMethod.GET)
public ResponseEntity< byte[] > handleGetMyBytesRequest()
{
    // Get bytes from somewhere...
    byte[] byteData = ....

    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType( MediaType.IMAGE_PNG );
    responseHeaders.setContentLength( byteData.length );

    return new ResponseEntity< byte[] >( byteData, 
        responseHeaders, HttpStatus.OK );
}

但是現在,控制器本身決定如何將數據呈現給客戶端。 這不是視圖的職責嗎?

所以我的問題是,當我有這個視圖類時:

public class DemoView extends AbstractView
{
    @Override
    protected void renderMergedOutputModel( Map< String, Object > model, 
            HttpServletRequest request, HttpServletResponse response ) throws Exception
    {
        bytes[] byteData = model.get( "byteData" );

        // ???
    }
}

當我想在其中使用ResponseEntity時,視圖代碼應如何顯示?

還是在視圖類中使用ResponseEntity毫無意義,如果是,為什么?

非常感謝你的幫助!

在您的AbstractView您可以簡單地使用HttpServletResponse對象設置HTTP響應狀態,並將byte[]數組寫入輸出流:

response.setStatus(status);
response.getOutputStream().write(byteData);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM