繁体   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