Angularjs-Spring:在控制器中将参数作为Null

时间:2017-04-23 19:41:11

标签: java angularjs spring

以下是控制器的代码

@RequestMapping(value = "/fetchRecord/", method = RequestMethod.POST)
    @ResponseBody
    public String fetchRecord(Integer primaryKey)
    {
        return this.serviceClass.fetchRecord(primaryKey);
    }

这是我的角度代码

var dataObj = {
            primaryKey : $scope.primaryKey
        };
        var res = $http.post('/Practice/learn/fetchRecord/', dataObj);
        res.success(function(data, status, headers, config) {

            $scope.firstname = data;
        });
        res.error(function(data, status, headers, config) {

            alert("failure message: " + JSON.stringify({
                data : data
            }));
        });

我可以调试我的代码。虽然我可以在浏览器中检查它是否传递了primaryKey的值。但在控制器中它仍然是空的。

任何可能的原因?

2 个答案:

答案 0 :(得分:0)

你应该发送一个json对象,

试试这个,

<header>
        <div>
          <img src="imagenes/origen.png">
          <nav>
              <ul>
                  <li><a href="#">Inicio</a></li>
                  <li>/</li>
                  <li><a href="#">Tienda</a></li>
                  <li>/</li>
                  <li><a href="#">Contacto</a></li>
              </ul>
          </nav>
        </div>
        <div class = "limpiar"></div>
    </header>

答案 1 :(得分:0)

您可以通过两种方式获取Controller中的值:

第一个选项:

指定具有您要传递的属性的对象。 假设您有RecordEntity个对象,它有一些属性,其中一个是Integer primaryKey。注释@RequestBody将接收值,因此控制器将为:

<强>后端

@RequestMapping(value = "/fetchRecord/", method = RequestMethod.POST)
@ResponseBody
public String fetchRecord(@RequestBody RecordEntity recordEntity) {
    return "primaryKey from requestBody: " +  recordEntity.getPrimaryKey();
}

<强>前端

在前端,您应该发送身体中具有json属性的primaryKey,例如:

http://localhost:8080/Practice/learn/fetchRecord/

帖子正文:

{
    "primaryKey": 123
}

您的控制器将在RecordEntity对象中收到值。

第二个选项:

按URL传递值,注释@RequestParam将收到值,因此控制器将为:

<强>后端

@RequestMapping(value = "/fetchRecord", method = RequestMethod.POST)
@ResponseBody
public String fetchRecord(@RequestParam Integer primaryKey) {
    return "primaryKey from RequestParam: " +  primaryKey;
}

<强>前端

在网址中,您应该使用?primaryKey发送值,例如

http://localhost:8080/Practice/learn/fetchRecord?primaryKey=123

您的控制器将收到Integer primaryKey

中的值