java 406_java – Spring-MVC 406不可接受而不是JSON响应

我正在尝试使用Spring 3.0.6返回JSON响应,但我得到406响应“Not Acceptable”,其描述如下:

“此请求标识的资源只能生成具有特征的响应

根据请求“接受”标题()不可接受.“

我知道之前曾经问过a very similar question,但是我不能让它为我的项目工作,尽管很多

测试,我不明白我做错了什么.

在我的Maven pom.xml中,我有以下内容:

org.codehaus.jackson

jackson-mapper-asl

1.8.5

compile

org.codehaus.jackson

jackson-core-asl

1.8.5

compile

在web.xml中,我引用webmvc-config.xml,日志确认已加载.

mainServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/spring/webmvc-config.xml

1

在webmvc-config.xml中我有以下内容:

我的控制器是:

@Controller

public class ClassifiedController {

@RequestMapping(value = "/classified/{idClassified}", headers = "Accept=*/*",

method = RequestMethod.GET)

@ResponseBody

public final Classified getClassified(@PathVariable final int idClassified) {

...

我尝试使用或不使用headers参数,但结果相同.如果我调用URL

直接使用Firefox,请求标头包含以下内容(使用firebug进行检查):

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

如果我使用以下JQuery:

$.ajax({

url: '/classified/38001',

type: 'GET',

dataType: 'json'

});

发送以下标头:

Accept: application/json, text/javascript, */*; q=0.01

在这两种情况下,结果都是406错误.我不知道还应该检查什么

这行得通.

更新:我决定通过Spring调试,我发现Jackson被正确调用,并且在org.codehaus.jackson.map.ser.StdSerializerProvider中,方法_findExplicitUntypedSerializer包含以下代码:

try {

return _createAndCacheUntypedSerializer(runtimeType, property);

} catch (Exception e) {

return null;

}

这是不幸的,因为隐藏了问题的根源.使用调试器,我发现该异常包含一个非常描述性的错误消息:

Conflicting getter definitions for property "reminded":

ClassifiedImpl#isReminded(0 params) vs

ClassifiedImpl#getReminded(0 params)

现在,我看到错误消息是一个愚蠢的错误,很容易修复,但没有它,这不是那么明显.事实上,修复问题,导致工作序列化.

解决方法:

标签:java,spring,json,spring-mvc,jackson

来源: https://codeday.me/bug/20190926/1818454.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值