【问题标题】:AJAX request sending null parameter to Java Spring controllerAJAX 请求向 Java Spring 控制器发送空参数
【发布时间】:2019-11-02 09:43:42
【问题描述】:

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

这是我迄今为止尝试过的:

$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 确实为 null。

输入是从用户那里获取的,他们输入了一个数字并点击了一个按钮。

【问题讨论】:

    标签: java jquery ajax spring


    【解决方案1】:

    @RequestParam 名称与发布的属性名称不匹配:user_iduserId。使用@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
    }
    

    【讨论】:

    • 感谢您的回复,我也尝试过,但由于某种原因仍然没有运气。我所做的更改是:@RequestParam(name = "user_id") final Integer userId,但现在它不打印日志,所以我假设它由于某种原因仍然为空......
    • 我已经更新了我的答案,我把 params 属性误认为是附加请求参数,而不是 POST 正文的一部分。
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2014-03-07
    • 2021-08-09
    • 2016-03-16
    • 2018-01-25
    • 1970-01-01
    • 2017-10-31
    • 2021-04-08
    相关资源
    最近更新 更多