AJAX请求将空参数发送到Java Spring控制器

时间:2019-11-02 09:43:42

标签: java jquery ajax spring

我正在尝试执行一个简单的POST请求,但是由于某种原因,我的Integer参数为null。这是很基本的东西,但是我在这里看不到我做错了。

这是我到目前为止尝试过的:

$rootScope.addUser = function(userId) {
            $http.post('/addUser', {
                params: {
                    user_id: userId
                }
            }).then(function(result) {
                $rootScope.userId = undefined;
            });
        };

控制器

@PostMapping("/addUser")
public void addTournament(@RequestParam(required = false) final Integer userId) {
    LOG.info("addUser: {}" , userId);
}

我也尝试过进行@RequestParam(name = "user_id") final Integer userId,但即使那样也不起作用!

最后,我将删除“ required = false”参数,但现在将其保留在那里只是为了验证userId确实为空。

正在从用户那里获取输入,他们输入了数字并单击一个按钮。

1 个答案:

答案 0 :(得分:1)

@RequestParam名称与发布的属性名称不匹配: user_id userId 。使用@RequestParam(name = "user_id") final Integer userId来匹配它们,或使用相同的请求属性和@RequestParam的名称。

[编辑]

当我阅读params: { ... }时,我希望它们是其他请求参数,而不是POST正文的一部分。您可以使用以下方法尝试POSTing数据吗?

$http.post('/addUser', { userId: userId }

并使用以下@PostMapping

@PostMapping("/addUser")
public void addTournament(@RequestBody User user) {
    LOG.info("addUser: {}" , user.getUserId());
}

...

class User {
private String userId;

// getter and setter
}
相关问题