How to post data from AngularJS to Struts2 using REST

戏子无情 提交于 2021-02-05 11:57:18

问题


I need to get the value from client side to server side. I am using AngularJS and Struts2 REST. Newbie in AngularJS here. My controller doesn't get the value passed or am i wrong in passing or using restful controller?

Here is my code:

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

Here is my rest controller:

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

}

回答1:


Since angular service is sending JSON, you can send a JSON object using data property. The JSON object will be deserialized to your model class properties because you are using ModelDriven or action class properties otherwise.

Struts2 REST plugin is made to handle JSON content from the request. It's possible due ContentTypeInterceptor, which is called rest, be able to find JSON handler for the request. The JSON handler is guessed from the Content-Type header or extension to the file in the URL. You can use either ways, but second is easier.

Note: that URLs without a file extension the Struts2 REST plugin defaulting to handle xhtml content. So you can modify your code

$http({
    method: "POST",
    url: "api/additionalcategory.json",
    data: {}
}).success(function(data, status, header, config){
    //success
}).error(function(data, status, header, config){
    //error
});



来源:https://stackoverflow.com/questions/37063889/how-to-post-data-from-angularjs-to-struts2-using-rest

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!