org.springframework.web.bind.MissingServletRequestParameterException:必需长参数'userId'不存在“

时间:2015-08-26 08:04:09

标签: javascript java spring spring-mvc post

我在发布对Spring控制器的调用时遇到异常

例外是:

 org.springframework.web.bind.MissingServletRequestParameterException : Required Long parameter 'userId' is not present"

我的Javascript文件是:

$scope.removeUser = function(user){
        var userId = JSON.stringify(user);
        $http.post('/portal/settings/user/deletecustomeruser', userId).success(function(data){
                $scope.response = data;
            })
        }
    }

Spring控制器代码是:

      @RequestMapping( value = "/user/deletecustomeruser", method = RequestMethod.POST , headers="Accept=application/json")
public @ResponseBody String deleteCustomerUser( @RequestParam (value = "userId") Long userId,
        HttpServletRequest request )
                throws Exception
                {
    String returnString = "";
    User user = userService.getUserById( userId );

当我添加(required = false)时,userId值变为null。 JavaScript控制器显然以JSON格式发送"userId",但是从控制器端出现了一些问题。

我在stackoverflow中检查了几乎所有问题,但是给定的解决方案没有帮助。

1 个答案:

答案 0 :(得分:7)

您希望userId作为服务器端的请求参数,但您在客户端http post请求中将userId作为请求正文发送,

更改客户端以将userId作为请求参数发送

$computer = [ADSI]"WinNT://$env:computername,computer"
$newuser = $computer.Create("user", "NewUser1")
$newuser.SetPassword("Password1")
$newuser.SetInfo()

或更改服务器端以将userId用作控制器中的请求正文

 $http.post('/portal/settings/user/deletecustomeruser?userId='+userId)