如下图所展示, 前端发起一个异步请求,传递了一个json对象
$scope.addQuestionToTest = function(qid){ var sendData={"quizId":$scope.tid,"questionId":qid}; $http({ url: WEBROOT+"/test/addquestion", method: 'POST', headers: { "Authorization": Data.token() }, data: sendData }).success(function (data) {...
@RequestMapping(value = "/addquestion",method=RequestMethod.POST) @ResponseBody public ResponseBase addQuestion( @RequestParam(value="quizId", required=true) String quizId, @RequestParam(value="questionId", required=true) Integer questionId ) {
spring mvc中报错400, debug跟到spring web的DispatchServlet,发现抛出的具体异常是请求的quizId找不到
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'quizId' is not present
奇了个怪了,为什么会找不到前端的参数,明明再firebug中都有的,请各位指教
[code="java"]@RequestMapping(value = "/addquestion",method=RequestMethod.POST)
@ResponseBody
public ResponseBase addQuestion(
@RequestBody Map params
) {
String quizId = params.get("quizId").toString();
Integer questionId = Integer.parseInt(params.get("questionId").toString());
}[/code]
试试这么写
PLZ use @RequestBody, not @RequestParam
如果传的是json 头信息中的 content-type 改成application/json
你用的什么版本的spring,换之前的版本试试吧,3.2.1之后应该是做了异常处理的。或者换种接收参数的方式
参数名换成小写的,试试。如quizId 换成quizid
基本类型没法赋值