我正在使用angular和struts2 + maven開發項目。 這是我的動作類
package com.ai.action;
import com.ai.model.PersonData;
import com.ai.model.Village;
import com.ai.service.PersonService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class AngularAction implements Action {
private Map session = ActionContext.getContext().getSession();
private Logger logger = LoggerFactory.getLogger(PersonAction.class);
private List<Village> STSarray;
@Autowired
private PersonService personService;
public String execute()
{
List<Village> STSarray = personService.getAllVillage();
logger.info("save method {}",getSTSarray());
return SUCCESS;
}
public List<Village> getSTSarray() {
return STSarray;
}
public void setSTSarray(List<Village> STSarray) {
this.STSarray = STSarray;
}
}
在這裏,我使用DAO與Hibernate加載數據到 列表
。數據已成功添加到數組中。 然後我想要獲得這個數據到jsp頁面。
struts.xml的
<action name="angularAction" class="com.ai.action.AngularAction">
<result type="json">
<param name="root">personData</param>
<param name="excludeNullProperties">true</param>
<param name="noCache">true</param>
</result>
</action>
這是我的jsp頁面。
<!DOCTYPE html>
<html ng-app="demo">
<head>
<meta charset="ISO-8859-1">
<title>AJAX with Struts 2 using AngularJS</title>
<link href="css/bootstrap.css" rel="stylesheet" />
<link href="css/bootstrap-theme.css" rel="stylesheet" />
<script type="text/javascript" src="scripts/angular.min.js"></script>
<script type="text/javascript">
angular.module("demo", [])
.controller("demoCtrl", function ($scope, $http) {
$scope.loadData = function() {
$http.get("angularAction").success(function (data) {
$scope.person = data;
console.log($scope.person);
});
}
});
</script>
</head>
<body ng-controller="demoCtrl">
<table class="table table-striped">
<p><button data-ng-click="loadData()">
Fetch data from server
</button></p>
<thead>
<tr>
<th>Country</th>
<th>Name</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in person">
<td>{{item.country}}</td>
<td>{{item.name}}</td>
<td>{{item.size}}</td>
</tr>
</tbody>
</table>
</body>
</html>
但是 console.log($ scope.person); 給我null.please幫助。
但是,當我的動作類下面給出它正常工作。
public class AngularAction implements Action{
//private PersonData personData = new PersonData();
private List<Village> Setstow =new ArrayList<Village>();
private Village village = new Village();
private Map session = ActionContext.getContext().getSession();
private Logger logger = LoggerFactory.getLogger(AngularAction.class);
private PersonData personData = new PersonData();
public String execute() {
personData.setFirstName("Mohaideen");
personData.setLastName("Jamil");
return SUCCESS;
}
public PersonData getPersonData() {
return personData;
}
public void setPersonData(PersonData personData) {
this.personData = personData;
}
正如我的想法,請告訴我如何使用獲得的動作類List STSarray數據$ http.get(「angularAction」)。成功(功能(數據)。
是「angularAction」的正確URL嗎?你可以使用你的瀏覽器的開發工具(通常你可以通過CTRL + SHIFT + I訪問它)來檢查它,然後進入「網絡」欄並查看電話是否正確 – valepu
你也設置了$ scope.itemsdata = data;但隨後調用console.log($ scope.person);這是一個不同的變量 – valepu
控制器初始化在哪裏?你錯過了這樣的一行:app.controller('demoCtrl',[「$ scope」,「$ http」,MyController]);函數聲明之後。並在HTML代碼中調用「loadData()」,但控制器中的函數在編輯時稱爲「getDataFromServer」 – valepu