【问题标题】:Post request from angularjs to spring mvc controller从 angularjs 向 spring mvc 控制器发布请求
【发布时间】:2016-07-23 16:46:01
【问题描述】:

我是 angularjs 的新手。我正在尝试将来自 angularjs 的请求发布到 spring 控制器。请求对象以角度正确记录,但在控制器中达到 null。

我也遇到过类似的问题,但对我没有用:

getting null using angular post

angularjs-spring-mvc-json-post-request

spring-angularjs-receiving-null-data-on-server

Controller.js:

$scope.addExpense = function (expense) {
        console.log("Received"+expense.amount+expense.description);

        var expenseDetail = {
            description:expense.description,
            amount:expense.amount,
            created:'',
            updated:'',
        };

        console.log("expense detail : "+JSON.stringify(expenseDetail));

        $http({
            method  : 'POST',
            dataType: 'json',
            url     : 'addExpense1',
            data    : JSON.stringify(expenseDetail),
            headers: {
                "Content-Type": "application/json"
            }
        }).success(function (response) {
            console.log(response.data);
        }).error(function(response){
            console.log("Error : "+response.data);
        });
    };

控制器方法:

@RequestMapping(value = "addExpense1", method = RequestMethod.POST)
@ResponseBody
public List<ExpenseDetail> addExpense1(@RequestBody ExpenseDetailDTO expenseDetailDTO) {
    LOG.info("Request to add description : " + expenseDetailDTO.getDescription());
    if(expenseDetailDTO==null || expenseDetailDTO.getDescription()==null || expenseDetailDTO.getAmount()==null)
        return null;
    expenseService.addExpense(expenseDetailDTO);

    List<ExpenseDetail> expenseDetails = expenseService.getAllForToday();
    LOG.info("Expense Details fetched : " + expenseDetails.size());
    return expenseDetails;
}

在控制器上打印以下日志:

Request to add description : null

我在任何地方都没有出错。 请帮帮我。

【问题讨论】:

  • 你是怎么解决这个问题的..?

标签: angularjs spring spring-mvc


【解决方案1】:

我过去在使用 spring webmvc 时遇到过类似的问题。

https://github.com/sombriks/rango-vote-spring/blob/master/src/main/java/rango/vote/RangoVoteController.java

在我的案例中解决的是添加 jackson-databind 依赖项和正确的配置:

https://github.com/sombriks/rango-vote-spring/blob/master/build.gradle#L54

https://github.com/sombriks/rango-vote-spring/blob/master/src/main/webapp/WEB-INF/applicationContext.xml#L29

如果可能,最好使用 spring + jersey 而不是 spring webmvc,因为您可以使用 jaxb 正确映射您的数据对象:

http://pastebin.com/TVsrJJm7

http://pastebin.com/jE7z1u3k

http://pastebin.com/39QDBgQD

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2015-06-08
    • 1970-01-01
    • 2019-08-06
    • 2021-08-09
    • 2016-05-17
    相关资源
    最近更新 更多