java - spring mvc @RequestMapping 产生多种格式

ham*_*med 4 java spring-mvc

我正在开发一个 java spring mvc 应用程序。我的控制器中有一个方法负责生成图像:

 @RequestMapping(value = "/view", method = RequestMethod.GET, produces = "image/jpg")
public void viewImage(HttpServletResponse response, HttpServletRequest request) throws Exception
Run Code Online (Sandbox Code Playgroud)

这工作正常。但我现在有一个问题。生成的图像可能有 jpg、jpeg 和 png 3 种格式。因此我需要produces@RequestMapping. 有没有办法做到这一点?例如,这样的事情:produces = "image/jpg, image/jpeg, image/png"

Mas*_*ave 6

您可以在产品中使用多种 mime 类型,例如

produces={"image/jpg, image/jpeg, image/png"}

现在为了让框架知道要解析哪个 mimeType,您需要向请求添加 Path 或 Parameter,或 Accept 标头(所谓的 PPA 策略)。在内容协商中阅读更多内容


Mr.*_*ley 5

从 的较新版本开始Spring,像这样实现会更好:

produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE}
Run Code Online (Sandbox Code Playgroud)


Jam*_*hin 2

在您的情况下,该produces字段并不重要,因为该方法返回void。似乎正在将图像写入输出流。您可以使用所需的图像格式设置响应标头。 例如:

response.setContentType("image/jpeg");
Run Code Online (Sandbox Code Playgroud)