如何使用 REST 将数据从 AngularJS 发布到 Struts 2
Posted
技术标签:
【中文标题】如何使用 REST 将数据从 AngularJS 发布到 Struts 2【英文标题】:How to POST data from AngularJS to Struts 2 using REST 【发布时间】:2016-09-01 00:37:22 【问题描述】:我需要从客户端获取值到服务器端。我正在使用 AngularJS 和 Struts2 REST。
我的控制器没有获得传递的值,还是我在传递或使用 RESTful 控制器时出错了?
这是我的代码:
angularcontroller.js
:
app.controller('saveAddCatCtrl', function($scope, $http)
$scope.save = function(newAddCat)
$http(
method: "POST",
url: "api/additionalcategory",
data: $scope.additionalCategory.addCatName
).success(function(data, status, header, config)
//success
).error(function(data, status, header, config)
//error
);
);
这是我的 REST 控制器:
public class AdditionalcategoryController extends ActionSupport implements ModelDriven<Object>
private AdditionalCategoryRepository additionalCategoryRepository =
(AdditionalCategoryRepository)ServletActionContext.getServletContext()
.getAttribute("additionalCategoryRepository");
private List<AdditionalCategory> additionalCategories;
public AdditionalCategory additionalCategory = new AdditionalCategory();
private int id;
public HttpHeaders index()
setAdditionalCategories(additionalCategoryRepository.findAllAdditionalCategory());
System.out.println("GET api/additionalCategory");
return new DefaultHttpHeaders("index").disableCaching();
public HttpHeaders create()
additionalCategoryRepository.createAdditionalCategory(additionalCategory);
return new DefaultHttpHeaders("create").disableCaching();
public void setAdditionalCategories(List<AdditionalCategory> additionalCategories)
this.additionalCategories = additionalCategories;
@Override
public Object getModel()
if (additionalCategories == null)
return additionalCategory;
else
return additionalCategories;
public int getId()
return id;
public void setId(int id)
this.id = id;
public List<AdditionalCategory> getAdditionalCategories()
return additionalCategories;
public AdditionalCategory getAdditionalCategory()
return additionalCategory;
public void setAdditionalCategory(AdditionalCategory additionalCategory)
this.additionalCategory = additionalCategory;
【问题讨论】:
您应该发布代码,这将有助于识别您的问题 How to access the services from RESTful API in my angularjs page?的可能重复 那还能读struts2 rest吗? TIA。 试过了,但是 struts2 控制器没有从角度获取数据。 :( 你的 struts2 控制器有响应吗? 【参考方案1】:由于 Angular 服务 http
发送 JSON,您可以使用 data
属性发送 JSON 对象。 JSON 对象将被反序列化为您的模型类属性,因为您使用的是 ModelDriven
或 Action
类属性。
Struts2 REST plugin 用于处理来自请求的 JSON 内容。这可能是由于ContentTypeInterceptor
(称为rest
)能够找到请求的JSON 处理程序。 JSON 处理程序是从 URL 中文件的 Content-Type
标头或 .json
扩展名猜测的。您可以使用任何一种方式,但第二种方式更容易。
注意:
没有文件扩展名的 Struts2 REST 插件默认处理 xhtml
内容的 URL。所以你可以修改你的代码
$http(
method: "POST",
url: "api/additionalcategory.json",
data:
).success(function(data, status, header, config)
//success
).error(function(data, status, header, config)
//error
);
【讨论】:
以上是关于如何使用 REST 将数据从 AngularJS 发布到 Struts 2的主要内容,如果未能解决你的问题,请参考以下文章
如何将 CSRF 令牌从 AngularJS 前端发送到 Spring REST 服务后端?
如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?
如何使用 AngularJS 和 Restangular 返回/编辑 REST 资源