【问题标题】:Old AngularJS Demo Not Working [duplicate]旧的 AngularJS 演示不工作 [重复]
【发布时间】:2017-08-13 18:02:55
【问题描述】:

我是 java ee 和 Angular JS 的初学者,我从网站上找到了一个代码 (http://www.simplecodestuffs.com/angularjs-interacting-with-java-servlet-using-json/) 我正在尝试在 Eclipse 中实现它。 但是当我单击“从服务器获取数据”按钮时,输出没有按预期显示

输出:

First Name: {{person.firstName}}

Last Name: {{person.lastName}}

这是我的 JSP:

<!DOCTYPE html>

    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>AJAX with Servlets using AngularJS</title>

    <script type="text/javascript" src="jas/angular.min.js"> </script>
    <script>
    var app = angular.module('myApp', []);
    function MyController($scope, $http) {

        $scope.getDataFromServer = function() {
                $http({
                        method:'GET',
                        url:'http://localhost:8080/Angular/AngularJsServlet'
                }).success(function(data, status, headers, config) {
                        $scope.person = data;
                }).error(function(data, status, headers, config) {
                        // called asynchronously if an error occurs
                        // or server returns response with an error status.
                });

        };
    };

    </script>
    </head>
    <body>
    <div ng-app="myApp">
            <div ng-controller="MyController">
               <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>

这是我的 servlet:

@WebServlet("/AngularJsServlet")
public class AngularJsServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AngularJsServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            PersonData personData = new PersonData();
            personData.setFirstName("Mohaideen");
            personData.setLastName("Jamil");

            String json = new Gson().toJson(personData);
            response.setContentType("application/json");
            response.getWriter().write(json);
    }



    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //doGet(request, response);
    }

}

【问题讨论】:

    标签: html angularjs jsp servlets jakarta-ee


    【解决方案1】:

    由于3f2232b5$controller 将不再在窗口上寻找控制器。在窗口中查找控制器的旧行为最初旨在用于示例、演示和玩具应用程序。我们发现允许全局控制器功能会鼓励不良做法,因此我们决定默认禁用此行为。

    要迁移,请将您的控制器注册到模块中,而不是将它们公开为全局变量

    — AngularJS Developer Guide - Migrating to V1.3.


    由于 b54a39$http 的已弃用自定义回调方法 - .success().error() - 已被删除。您可以改用标准的.then()/.catch() promise 方法,但请注意方法签名和返回值不同。

    $http(...)
      .then(function onSuccess(response) {
        // Handle success
        var data = response.data;
        var status = response.status;
        var statusText = response.statusText;
        var headers = response.headers;
        var config = response.config;
        ...
      }).catch(function onError(response) {
        // Handle error
        var data = response.data;
        var status = response.status;
        var statusText = response.statusText;
        var headers = response.headers;
        var config = response.config;
        ...
      });
    

    — AngularJS Developer Guide - Migrating to v1.6 - http

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 2017-03-10
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多