【问题标题】:How to POST data from AngularJS to Struts 2 using REST如何使用 REST 将数据从 AngularJS 发布到 Struts 2
【发布时间】: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;
}

}

【问题讨论】:

标签: javascript java angularjs rest struts2


【解决方案1】:

由于 Angular 服务 http 发送 JSON,您可以使用 data 属性发送 JSON 对象。 JSON 对象将被反序列化为您的模型类属性,因为您使用的是 ModelDrivenAction 类属性。

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
});

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2015-11-25
    • 2017-08-22
    • 1970-01-01
    • 2014-02-16
    • 2015-01-29
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多