Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (春天,安格拉斯)我不';我不知道为什么它是空的_Javascript_Html_Angularjs_Spring - Fatal编程技术网

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.usrEmail

Hey@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