我们如何将Struts2动作类传递给angularjs $ http get

时间:2015-12-23 11:26:19

标签: java angularjs jsp struts2 struts2-json-plugin

我的目标是将值显示为从表格到JSP页面上的模型弹出窗口的列表。

动作

public class IcdAction extends ActionSupport {

    private List<Icd10> icdCodes;

    public String execute() throws MalformedURLException, JsonProcessingException {
        SomeProcess ap = new SomeProcess();
        icdCodes = ap.getList();
        return SUCCESS;     
    }
}

JS

var myApp = angular.module('myApp', []);

myApp.controller('MainCtrl', function ($scope, $http) {

    $http.get('IcdCodesAction')
    .success(function(response){
         $scope.icdcodes = response;
    });
});

struts.xml中

<action name="IcdCodesAction" class="com.emr.action.IcdAction" >    
    <result type="json">
    </result>
</action>

在JSP文件中,我在ng-repeat上使用icdcodes

我是AngularJS的新手。我无法弄清楚阻止列表显示的问题在哪里。

如果我使用$scopes.icdcodes的硬编码json数据,那么它工作正常。

1 个答案:

答案 0 :(得分:0)

json结果由 struts2-json-plugin 处理,serializes the whole Action

然后你可以:

  1. 从序列化操作中只读取所需对象:

    $http.get('IcdCodesAction')
    .success(function(response){
         console.log("this is the serialzied action -> " + response);
         console.log("this is what I want:  " + response.icdCodes);
         $scope.icdcodes = response.icdCodes;
    });
    

  2. 使用root结果的json属性指定要序列化的单个元素:

    <action name="IcdCodesAction" class="com.emr.action.IcdAction" >    
        <result type="json">
            <param name="root">icdCodes</param>
        </result>
    </action>