我正在尝试执行一个简单的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确实为空。
正在从用户那里获取输入,他们输入了数字并单击一个按钮。
答案 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
}