如何从 return 和 JSON 的 REST Web 服务在 ng table 中加载数据
How to load data in ng table from REST web service that return a JSON
我想从 JSON 加载我的 table return 我在 SpringMVC 中的 REST Web 服务,但我收到以下错误提示我的休息方法不支持 GET 方法。
我的控制器映射的URL就是这个
http://localhost:8080/MyApp/doc/showDocTable/
并且 URL 从那个变成了这个
http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1
我不知道为什么 URL 会变成那个,因为我只是在做网站上的基本示例 http://ng-table.com/#/loading/demo-external-array
这是我的控制器中调用网络服务的函数
var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable/');
this.tableParams = new NgTableParams({}, {
getData: function (params) {
// ajax request to api
return Api.get(params.url()).$promise.then(function (data) {
params.total(data.inlineCount); // recal. page nav controls
return data.results;
});
}
});
这是我在 Spring MVC
中的控制器方法
@RequestMapping(value = "/doc/showDocTable/", method = RequestMethod.GET)
public ResponseEntity<List<HistDoc>> showTable() {
List<HistDoc> listHistDoc = docDAO.getDocs();
return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}
这是我在浏览器中遇到的错误
GET XHR http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1 [HTTP/1.1 405 Request method 'GET' not supported 6ms]
这里是我控制台的错误
WARN 2016-08-11 12:46:58,206 [http-listener-1(4)] org.springframework.web.servlet.PageNotFound - Request method 'GET' not supported
我认为问题在于 ngTable 以某种方式将 URL 更改为那个奇怪的 URL 而我在 Spring 中的 Web 方法不知道该做什么。
编辑 1
我从后端方法 url 中删除了“/”,就像这样`@RequestMapping(value = "/doc/showDocTable", method = RequestMethod.GET)
public ResponseEntity> showTable() {
列表 listHistDoc = docDAO.getDocs();
return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}`
我还从 angularJs 控制器
的 getData 方法中删除了“/”
var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable');
但现在我在浏览器 firefox 控制台中收到此错误
Error: $resource:badcfg
Response does not match configured parameter
Error in resource configuration for action `get`. Expected response to contain an object but got an array (Request: GET http://localhost:8080/MyApp/doc/showDocTable)
编辑 2:
这是我的 HTML
<div class="col-lg-12" ng-controller="EstHistDoc as demo">
<table ng-table="demo.tableParams" class="table table-bordered table-striped table-condensed">
<tr ng-repeat="row in $data track by row.idDoc">
<td data-title="'Name'" filter="{name: 'text'}" sortable="'name'">{{row.name}}</td>
<td data-title="'Description'" filter="{description: 'text'}" sortable="'description'">{{row.description}}</td>
</tr>
</table>
这是我从后端 return JSON
[
{
"idHisReg":null,
"idDoc":1,
"name":doc one,
"description:" "a description"
},
{
"idHisReg":null,
"idDoc":2,
"name": doc two,
"description:" "a seconddescription"
}
]
使用 Api.query(...)
而不是使用 Api.get()
应该可以解决您的错误:
Error in resource configuration for action get
. Expected response to
contain an object but got an array (Request: GET
http://localhost:8080/MyApp/doc/showDocTable)
您必须使用 $resource.query()
(Api.query()
) 而不是 $resource.get()
(Api.get()
)。
我想从 JSON 加载我的 table return 我在 SpringMVC 中的 REST Web 服务,但我收到以下错误提示我的休息方法不支持 GET 方法。
我的控制器映射的URL就是这个
http://localhost:8080/MyApp/doc/showDocTable/
并且 URL 从那个变成了这个
http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1
我不知道为什么 URL 会变成那个,因为我只是在做网站上的基本示例 http://ng-table.com/#/loading/demo-external-array
这是我的控制器中调用网络服务的函数
var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable/');
this.tableParams = new NgTableParams({}, {
getData: function (params) {
// ajax request to api
return Api.get(params.url()).$promise.then(function (data) {
params.total(data.inlineCount); // recal. page nav controls
return data.results;
});
}
});
这是我在 Spring MVC
中的控制器方法@RequestMapping(value = "/doc/showDocTable/", method = RequestMethod.GET)
public ResponseEntity<List<HistDoc>> showTable() {
List<HistDoc> listHistDoc = docDAO.getDocs();
return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}
这是我在浏览器中遇到的错误
GET XHR http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1 [HTTP/1.1 405 Request method 'GET' not supported 6ms]
这里是我控制台的错误
WARN 2016-08-11 12:46:58,206 [http-listener-1(4)] org.springframework.web.servlet.PageNotFound - Request method 'GET' not supported
我认为问题在于 ngTable 以某种方式将 URL 更改为那个奇怪的 URL 而我在 Spring 中的 Web 方法不知道该做什么。
编辑 1 我从后端方法 url 中删除了“/”,就像这样`@RequestMapping(value = "/doc/showDocTable", method = RequestMethod.GET) public ResponseEntity> showTable() { 列表 listHistDoc = docDAO.getDocs();
return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}`
我还从 angularJs 控制器
的 getData 方法中删除了“/”var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable');
但现在我在浏览器 firefox 控制台中收到此错误
Error: $resource:badcfg
Response does not match configured parameter
Error in resource configuration for action `get`. Expected response to contain an object but got an array (Request: GET http://localhost:8080/MyApp/doc/showDocTable)
编辑 2: 这是我的 HTML
<div class="col-lg-12" ng-controller="EstHistDoc as demo">
<table ng-table="demo.tableParams" class="table table-bordered table-striped table-condensed">
<tr ng-repeat="row in $data track by row.idDoc">
<td data-title="'Name'" filter="{name: 'text'}" sortable="'name'">{{row.name}}</td>
<td data-title="'Description'" filter="{description: 'text'}" sortable="'description'">{{row.description}}</td>
</tr>
</table>
这是我从后端 return JSON
[
{
"idHisReg":null,
"idDoc":1,
"name":doc one,
"description:" "a description"
},
{
"idHisReg":null,
"idDoc":2,
"name": doc two,
"description:" "a seconddescription"
}
]
使用 Api.query(...)
而不是使用 Api.get()
应该可以解决您的错误:
Error in resource configuration for action
get
. Expected response to contain an object but got an array (Request: GET http://localhost:8080/MyApp/doc/showDocTable)
您必须使用 $resource.query()
(Api.query()
) 而不是 $resource.get()
(Api.get()
)。