猿问

ajax application/json传入后台,拦截器怎么获取参数且不破坏

如题:


  前端传入代码:

   

   $("#button").click(function(){

 var user = {"name":"张三","age":9,"key":"xx"};

$.ajax({

    url:"http://localhost:8080/mybatis/insert",    

    contentType : 'application/json',

    type : "POST",

    dataType: 'json',

    data: JSON.stringify(user),

    success : function(data) {

        alert(data.result);

    }

});

拦截器:


    @Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception {


    System.out.println("我拦截了");

    // 不能使用 request.getReader(); 和流的方式获取(流只能取一次,导致后台获取不到参数),request.getParameter();获取不到 json格式参数

    

    return true;

}

后台:


@RequestMapping("/insert")


public Map<String, Object> insert(@RequestBody User user){

    service.insert(user);

    Map<String, Object> result = new HashMap<>();

    result.put("result", "success");

    return result;

}

,请问谁有办法在不破坏后台:流和@RequestBody情况下,在拦截器里面获取我前台传入的key?


芜湖不芜
浏览 630回答 1
1回答

红糖糍粑

RequestBody&nbsp;和&nbsp;ResponseBody&nbsp;只能被读取一次,故而不要在&nbsp;interceptor&nbsp;中进行读取操作. 具体的解释和解决方法和移步这里Spring REST service: retrieving JSON from Request
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答