如何在Angularjs中使用Spring控制器的响应对象

时间:2015-11-17 08:02:22

标签: java angularjs spring

我正在尝试显示对象'数据作为ArrayList响应传递。我能够看到对象的内容,但无法在angularjs视图中使用它。 这是我的Spring控制器方法:

@RequestMapping(value = "/page2", method = RequestMethod.POST)
    public @ResponseBody ArrayList<ConceptModelDetails> getAllTasks() {
            ArrayList<ConceptModelDetails> list = new ArrayList<ConceptModelDetails>();
            ApplicationContext context = new ClassPathXmlApplicationContext(
                            "Spring-module.xml");
            JDBCConceptModelDAO objDAO = (JDBCConceptModelDAO) context
                            .getBean("objDAO");
            list = objDAO.getData();
            return list;
    }

这是视图第2页

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script
    src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.mi n.js"></script>
</head>
<body>
    <form action="page2" method="post">
            <h1>
                    Success: <input type="submit" value="See Data">
            </h1>
    </form>
    <div ng-app="myApp" ng-controller="controller">

            <table>
                    <tr ng-repeat="x in object">
                            <td>${ x.requestor }</td>
                    </tr>
            </table>
    </div>

    <script>
            var app = angular.module('myApp', []);
            app.controller('controller', function($scope, $http) {
                                            $http.post("page2")
                                                            .success(function(response) {
                                                                    $scope.object = response.records;                                                                        
                                                            console.log(response);
                                                            });                        

            });
    </script>

点击查看数据后,我得到以下输出:

Output

但我想在表格中显示数据。

2 个答案:

答案 0 :(得分:1)

response对象只是一个JavaScript对象数组。然后,您可以将其绑定到ngGrid组件以进行渲染。

在html中:

<body ng-controller="MyCtrl">
    <div class="gridStyle" ng-grid="gridOptions">
    </div>
</body>

在JavaScript中:

$scope.conceptModelDetailsList = response;
$scope.gridOptions = { data: 'conceptModelDetailsList' };

请注意,这只是一种方法。有许多不同的方式来呈现这样的列表。

答案 1 :(得分:1)

你在这里犯了一个根本性的错误。

请理解Spring MVC概念。这些教程将帮助您理解这一点。

在上面的代码public @ResponseBody ArrayList<ConceptModelDetails> getAllTasks(){...}中,该方法返回ArrayList<ConceptModelDetails>。由于存在JSON,这会转换为@ResponseBody

现在你必须使用AJAX调用在AngularJS grid-ui中使用它。 在这里解释你的内容超出范围,请从中学习角度  W3School AngularJS Tutorial

熟悉Spring中的Spring MVCREST API概念后,请查看Angular UI Grid以显示JSON数据。

如果您只想在视图中显示ArrayList,请了解Model以及如何在JSTL中进行迭代。这在上面的春季教程中有解释。

这是一个漫长的过程,没有成为开发人员的捷径!

希望它有所帮助!