ajax 路径 json,spring boot框架,使用ajax请求,路径含有“.json”,访问失败,不含时访问成功...

问题:

Controller如下

@Controller

@RequestMapping("/portal/youGouGoods")

public class YouGouGoodsController {

@RequestMapping(value = "getTopCategoryList")

@ResponseBody

public Object getTopCategoryList(YouGouGoodsCondition condition) {

try {

return youGouGoodsService.getTopCategoryList(condition);

} catch (Exception ex) {

ex.printStackTrace();

}

return null;

}

}

ajax请求如下:

function initFirstType() {

$.post(ctx+"/portal/youGouGoods/getTopCategoryList.json",{"page":1,"rows":1000}, function(data) {

if (data.length > 0)

$.each(data, function(idx, item) {

var option = $("" + item.name + "");

$("#firstType").append(option);

});

}, "json");

}

含.json的返回值,这一段没有进入controller

6c1555302777729326ca3efa0910d9ec.png

不含.json的返回值

6c1555302777729326ca3efa0910d9ec.png

回答1:

经查阅官方文档,发现Spring Boot认为如今的内容协商制度越来越可靠,不需要多写一步".json"来确保传递给客户端的数据格式正确,因此默认禁用后缀模式匹配,意思就是在普通的spring MVC中,/aaa/bbb.json的请求可以匹配到控制器,但是在Spring Boot中,无法匹配控制器。

6c1555302777729326ca3efa0910d9ec.png

官网提供的解决方案:

1)直接删掉“.json”

2)如果实在不放心,将/aaa/bbb.json替换为/aaa/bbb?format=json

3)在application.perproties中增加如下配置,就可以继续使用“/aaa/bbb.json”来匹配控制器了

spring.mvc.contentnegotiation.favor-path-extension=true

spring.mvc.pathmatch.use-suffix-pattern=true

4)但第三种操作打开了所有的后缀模式匹配,为了更安全起见,官网还提供了第四种解决方案

spring.mvc.contentnegotiation.favor-path-extension=true

spring.mvc.pathmatch.use-registered-suffix-pattern=true

个人推荐前两种解决方案

回答2:

post 请求给的是地址,你的控制器的路由地址是“/portal/youGouGoods”,方法的路由地址是“getTopCategoryList”,最后访问的路径“/portal/youGouGoods/getTopCategoryList”,,你加个 .json 干啥。。

回答3:

去掉.json,你在ajax把数据类型加上就行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值