@Produces({" application / x-javascript"})无法在spring mvc 4.0.5版中工作.RELEASE

时间:2015-01-12 09:17:51

标签: javascript json rest spring-mvc spring-annotations

我创建了一个spring应用程序,我也在使用webservices。

我想使用jsonp回调函数,媒体类型应该是{" application / x-javascript"}。这似乎不起作用。它返回json对象而不是javascript。 这是代码..

 @RequestMapping(value = "widget", method = RequestMethod.GET)
 @Produces({"application/x-javascript"})
  public @ResponseBody JSONWithPadding displayWidgetPage(Model model, HttpServletResponse                              
 response,HttpServletRequest request)
{
    String callback = request.getParameter("callback");

    PointsInfo pointsInfo =new PointsInfo();
    pointsInfo.setUsername("json");

    return new JSONWithPadding(pointsInfo,callback);
    }

我使用其他客户端检查了......

它说内容类型是:Content-Type:application / json; charset = UTF-8

必须是:Content-Type:application / javascript; charset = UTF-8

2 个答案:

答案 0 :(得分:2)

我认为你将Jersey的@ProducesJSONWithPadding与Spring MVC混合在一起,泽西的@Produces将不会对其产生任何影响。

如果您正在寻找仅使用Spring MVC实现JSON-P的方法,请查看

http://patrickgrimard.com/2010/07/28/tutorial-implementing-a-servlet-filter-for-jsonp-callback-with-springs-delegatingfilterproxy/

或者如果您能够升级到4.1或更高版本

http://spring.io/blog/2014/07/28/spring-framework-4-1-spring-mvc-improvements

答案 1 :(得分:0)

您使用的是早于3.1.1.RELEASE的Spring版本。如果您要设置响应的媒体类型,它应该在RequestMapping注释中,如下所示:

    @RequestMapping(value = "/list/rideLogs/{rideId}", method = RequestMethod.POST, 
         produces = YOUR_MEDIA_TYPE)

据说应用程序/ javascript不是Spring的有效媒体类型。您可以引用MediaType类的值。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/MediaType.html