2011-09-22 23 views
0

使用Spring Web MVC,我想使用ResponseEntity將字節發送回客戶端。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沒有意義,如果是的話,爲什麼?

非常感謝您的幫助!

回答

1

在你AbstractView,你可以簡單地使用HttpServletResponse對象設置HTTP響應狀態和寫byte[]陣列輸出流:

response.setStatus(status); 
response.getOutputStream().write(byteData); 
相關問題