You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Angular控制器向Spring控制器传递数据?附代码示例

完整实现:从Angular控制器向Spring控制器传递JSON数据

看起来你已经搭好了基础的代码框架,但还需要补全几个关键部分才能让Angular和Spring成功完成数据传递。我来给你梳理完整的实现方案:

1. 修正Spring Controller代码

你的Spring Controller目前没有正确接收JSON请求体,必须加上@RequestBody注解,才能把请求中的JSON数据自动绑定到QuotationDO对象上。另外我保留了你原本返回ModelAndView的逻辑(适合服务端渲染场景),如果是前后端分离架构,也可以改成返回JSON格式的响应:

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.http.MediaType;

@RequestMapping(value = "/saveNamedDrivers", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public ModelAndView saveNamedDrivers(@RequestBody QuotationDO user, 
                                     HttpServletRequest request, 
                                     HttpSession session,
                                     HttpServletResponse response) {
    System.out.println("请求已成功接收");
    System.out.println("接收的用户数据:" + user.toString());
    // 这里可以添加你的业务逻辑,比如将数据保存到数据库
    return new ModelAndView("premium/premium");
}

关键注意点:

  • 确保QuotationDO类的属性和Angular传递的JSON字段名称完全匹配(大小写敏感)
  • 类必须包含无参构造函数和对应的getter/setter方法,否则Spring无法完成对象映射

2. 补全Angular的$http请求代码

你需要完善请求配置,包括设置正确的请求头、传递符合格式的JSON数据,同时处理成功和失败的回调逻辑:

// 假设CONTEXT_PATH已正确定义,比如"/your-application/"
$http({
    method: 'POST',
    url: CONTEXT_PATH + 'saveNamedDrivers',
    headers: {
        'Content-Type': 'application/json' // 必须设置该请求头,告知服务器请求体为JSON格式
    },
    data: {
        // 这里填写要传递的字段,需和QuotationDO的属性一一对应
        name: "John Doe",
        age: 30,
        licenseNumber: "ABC123"
        // 根据你的QuotationDO类补充其他字段
    }
}).then(function successCallback(response) {
    // 请求成功后的处理逻辑,比如提示用户或页面跳转
    console.log("数据保存成功");
    // 如果需要跳转页面,可使用$location服务:$location.path('/premium');
}, function errorCallback(response) {
    // 请求失败的处理逻辑,比如打印错误信息或提示用户
    console.error("数据保存失败:", response.statusText);
});

额外提示:如果你的Angular版本是1.x,记得确保$http(以及需要用到的$location等服务)已经注入到控制器中,示例如下:

angular.module('yourApp').controller('YourController', ['$http', '$location', function($http, $location) {
    // 上述$http请求代码写在这里
}]);

3. 常见问题排查清单

  • 跨域问题:如果Angular和Spring运行在不同端口/域名下,需要在Spring端配置跨域支持,可以给Controller方法添加@CrossOrigin注解,或者配置全局CORS规则
  • 字段不匹配:检查QuotationDO的属性名和Angular传递的JSON键名是否完全一致(比如Spring里是licenseNumber,Angular里不能写成licensenumber)
  • 请求头缺失:如果未设置Content-Type: application/json,Spring可能无法识别请求体格式,导致@RequestBody绑定失败

内容的提问来源于stack exchange,提问作者MohanaKrishnan S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:24:21