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

时间:2015-09-12 04:38:55

标签: java spring-mvc

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

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

这很好用。但我现在有一个问题。产生的图像可以具有3种格式jpg,jpeg和png。因此,produces中需要多个@RequestMapping属性。有没有办法做到这一点?例如,类似这样的内容:produces = "image/jpg, image/jpeg, image/png"

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

在您的情况下,produces字段无关紧要,因为该方法返回void。似乎是将图像写入输出流。您可以使用所需的图像格式设置响应标头。 的 E.g:

response.setContentType("image/jpeg");

答案 2 :(得分:2)

从较新版本的Spring开始,如此实施效果更好:

produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE}

答案 3 :(得分:0)

我找到了。从this link开始,produces属性可以包含字符串数组。所以我可以拥有这个:

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