【发布时间】:2016-05-31 20:37:46
【问题描述】:
我正在创建一个简单的应用程序,它通过 AngularJS 对 Struts 2 进行简单的调用。我只是从 AngularJS 创建一个简单的 HTTP GET 请求以从服务器获取 JSON。在服务器端,我使用名为 AngularAction.java 的 Struts2 动作类。
但是,我一直无法上课,甚至我在动作课上打印了一些虚拟消息但找不到任何东西。
代码文件是:
index.jsp
(我通过 AngularJS 向 Struts 类发送 HTTP GET 请求的索引页)
<script>
var app = angular.module("myApp", []);
app.controller("controller", function($scope,$http){
$scope.getDataFromServer = function() {
$http.get("angularAction").success(
function(data, status, headers, config) {
$scope.person = data;
}).error(function(data, statusenter code here, headers, config) {
console.log("error message " + data);
});
};
});
</script>
</head>
<body>
<div ng-app="myApp" >
<div ng-controller="controller" >
<button ng-click="getDataFromServer()">
Fetch data from server
</button>
<p> First Name : {{person.firstName}} </p>
<p> Last Name : {{person.lastName}} </p>
</div>
</div>
</body>
</html>
AngularAction.java:
(Struts动作类)
public class AngularAction extends ActionSupport {
PersonData personData ;
@Override
public String execute() throws Exception {
personData.setFirstName("test");
personData.setLastName("base");
return SUCCESS;
}
public PersonData getPersonData() {
return personData;
}
public void setPersonData(PersonData personData) {
this.personData = personData;
}
}
struts.xml:
(Struts 配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<struts>
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="json-default">
<action name="angularAction" class="com.action.AngularAction" >
<result type="json" >
<param name="root">personData</param>
<param name="excludeNullProperties">true</param>
<param name="noCache">true</param>
</result>
</action>
</package>
</struts>
【问题讨论】:
-
您的
personData为空。 -
不,我上不了动作课。映射有什么问题吗?
-
它不会改变
personData为空的事实。查看您的浏览器的开发工具到请求的去向。 -
如果你用 Spring 配置了
PersonData,它将被注入到 action 属性中。你用过吗? -
让我们假设动作类中没有 personData 那么它也不适合我..
标签: java angularjs json jsp struts2