Javascript (春天,安格拉斯)我不';我不知道为什么它是空的
我想发送用户的电子邮件检查副本 这是我的背部控制器Javascript (春天,安格拉斯)我不';我不知道为什么它是空的,javascript,html,angularjs,spring,Javascript,Html,Angularjs,Spring,我想发送用户的电子邮件检查副本 这是我的背部控制器 @RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST) public ResponseEntity<Object> getCnt( HttpServletRequest request, HttpServletResponse response, @RequestPara
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value="usrEmail", required=false) String usrEmail){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
$scope.user.usrEmail = $scope.usrEmail;
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: angular.toJson($scope.usrEmail)
};
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody Object userReqObj){
HashMap<String, Object> userMap = (HashMap<String, Object>) userReqObj;
String userEmail = userMap.get("usrEmail");
//logic goes here...
}
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json'
},
data: {
'usrEmail' : $scope.usrEmail
}
};
这就是我的观点
<input type="email" class="form-control" name="usr_Email"
ng-model="usrEmail" ng-required="true"
ng-keypress="checkDuplicate()">
当我使用“console.log”进行检查时,前端控制器可以正确地获取用户的电子邮件。
但在后台控制器中,RequestParam没有任何内容,只有NULL,没有错误代码,只有“NullPointerException”
我认为这不是沟通错误。
我错过了什么吗?
谢谢 请阅读for$http
配置对象。对于关键数据,它说:
data{string | Object}
–作为请求消息数据发送的数据
这意味着数据
可以是对象或字符串。在您的例子中,您将其作为字符串发送,这是有道理的,但您忘记在其中提到参数的名称。代码中的数据应如下所示:
data: 'usrEmail=' + $scope.usrEmail // there is no need of angular.toJson here
这正确地表示参数的名称为usrEmail
。但为了避免混淆,您可以始终使用对象来指定数据:
data: {
usrEmail: $scope.usrEmail
}
请阅读for$http
配置对象。对于关键数据,它说:
data{string | Object}
–作为请求消息数据发送的数据
这意味着数据
可以是对象或字符串。在您的例子中,您将其作为字符串发送,这是有道理的,但您忘记在其中提到参数的名称。代码中的数据应如下所示:
data: 'usrEmail=' + $scope.usrEmail // there is no need of angular.toJson here
这正确地表示参数的名称为usrEmail
。但为了避免混淆,您可以始终使用对象来指定数据:
data: {
usrEmail: $scope.usrEmail
}
从angularjs发送数据,如下所示
$scope.user.usrEmail = $scope.usrEmail;
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: {
'usrEmail' : $scope.usrEmail
}
};
在从正文传递数据时,使用RequestBody注释获取电子邮件。并且需要为用户创建一个Bean类
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody User usrEmail){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
然后您需要在控制器中使用@PathValiable('usrEmail')
,并@RequestMapping(value=“/api/v1/public/checkDuplicate/{usrEmail}”
从angularjs发送数据,如下所示
$scope.user.usrEmail = $scope.usrEmail;
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: {
'usrEmail' : $scope.usrEmail
}
};
使用RequestBody注释在您从body传递数据时获取电子邮件。并且需要为用户创建一个Bean类
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody User usrEmail){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
然后您需要在控制器中使用@PathValiable('usrEmail')
,并@RequestMapping(value=“/api/v1/public/checkDuplicate/{usrEmail}”
它是您在后台控制器中使用的链接到请求参数的@RequestParam
。它应该是链接到HTTP请求主体的@RequestBody
。查看更多信息
现在您可以像下面这样更改代码-
后台控制器
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value="usrEmail", required=false) String usrEmail){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
$scope.user.usrEmail = $scope.usrEmail;
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: angular.toJson($scope.usrEmail)
};
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody Object userReqObj){
HashMap<String, Object> userMap = (HashMap<String, Object>) userReqObj;
String userEmail = userMap.get("usrEmail");
//logic goes here...
}
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json'
},
data: {
'usrEmail' : $scope.usrEmail
}
};
它是您在后台控制器中使用的链接到请求参数的@RequestParam
。它应该是链接到HTTP请求主体的@RequestBody
。查看更多信息
现在您可以像下面这样更改代码-
后台控制器
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value="usrEmail", required=false) String usrEmail){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
$scope.user.usrEmail = $scope.usrEmail;
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: angular.toJson($scope.usrEmail)
};
@RequestMapping(value = "/api/v1/public/checkDuplicate", method = RequestMethod.POST)
public ResponseEntity<Object> getCnt(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody Object userReqObj){
HashMap<String, Object> userMap = (HashMap<String, Object>) userReqObj;
String userEmail = userMap.get("usrEmail");
//logic goes here...
}
var req = {
method: 'POST',
url: './api/v1/public/checkDuplicate',
dataType: 'json',
headers: {
'Content-Type': 'application/json'
},
data: {
'usrEmail' : $scope.usrEmail
}
};
您没有在列表中添加查询参数
url: './api/v1/public/checkDuplicate?**usrEmail='+$scope.usrEmail**
将此添加到您的代码中?usrEmail='+$scope.usrEmail您没有在
url: './api/v1/public/checkDuplicate?**usrEmail='+$scope.usrEmail**
将此添加到您的代码中?usrEmail='+$scope.usrEmailHey@zzangs33,我再次回答。请check@SangramBadi--请不要拨动OP来检查您的答案。如果它解决了问题,他们显然会投票/接受它。当客户端以对象或字符串形式发布数据时,服务器在RequestBody中接收数据,而不是在RequestParam中。使用请看你收到了什么东西。嘿@zzangs33,我又回答了一次。请check@SangramBadi--请不要拨动OP来检查您的答案。如果它解决了问题,他们显然会投票/接受它。当客户端以对象或字符串形式发布数据时,服务器在RequestBody而不是RequestParam中接收数据。请使用RequestBody然后看看你收到了什么对象。我试着在你写的时候更改代码,但也不起作用。我还试着将RequestBody作为map$scope.user.usrEmail=$scope.usrEmail;~~数据:angular.toJson($scope.user)
@zzangs33--有什么错误吗?你试着将数据作为字符串发送吗?公共响应标题getCnt(HttpServletRequest请求,HttpServletResponse响应,@RequestParam(value=“usrEmail”,required=false)字符串usrEmail)
var req={method:'POST',url:'./api/v1/public/checkDuplicate',数据类型:'json',标题:{Content-Type':'application/json;charset=utf-8'},'usrEmail':$scope.usrEmail};
我只更改了JS中的代码。但它仍然是空的。我尝试在编写代码时更改代码,但也不起作用。我还尝试将RequestBody作为map$scope.user.usrEmail=$scope.usrEmail;~~数据:angular.toJson($scope.user)
@zzangs33--发生了什么错误?您是否尝试将数据设置为字符串?公共响应属性getCnt(HttpServletRequest,HttpServletResponse,@RequestParam(value=“usrEmail”,required=false)字符串usrEmail)
var req={method:'POST',url:'./api/v1/public/checkDuplicate',dataType:'json',headers:{'Content-Type':'application/json;charset=utf-8'},'usrEmail':$scope.usrEmail};
我只更改了JS中的代码,但仍然为NULL'usrEmail:$scope.usrEmail
,@RequestParam(value=“usrEmail”,required=false)String usrEmail)
然后您需要为用户创建一个bean,它可能包含电子邮件的getter setter方法。或者您可以通过URL传递电子邮件,并可以使用PathVariable注释@RequestMapping(value=“/api/v1/doc/list”,method=RequestMethod.GET)公共响应getList(HttpServletRequest请求,HttpServletResponse响应,@RequestParam(value=“formId”,required=false)字符串formId,@RequestParam(value=“currentPage”,defaultValue=“1”,required=false)int currentPage,@RequestParam(value=“docTitle”,required=false)字符串docTitle,@RequestParam(value=“companyId”,required=false)Stri