从Spring控制器获取null对象到AngularJS

时间:2017-07-24 00:09:31

标签: javascript angularjs spring-mvc

这是我的Spring控制器(资源类)方法:

@Controller 
@RequestMapping("/rest/cart")
public class CartResources {

    @Autowired 
    CartService cartService; 

    @RequestMapping("/{cartId}") 
    public @ResponseBody 
    Cart getCartById (@PathVariable(value = "cartId") int cartId) 
    { 
        Cart cart =  cartService.getCartById(cartId);
        CartItem item = cart.getCartItems().get(0); 

        Product product = item.getProduct(); 

        System.out.println(product.getProductName()); 
        return cart; 
        }
}

这是我的角度js类:

var cartApp = angular.module ("cartApp", []);
cartApp.controller("cartCtrl", function ($scope, $http){

    $scope.refreshCart = function (cartId) {
        $http.get('/eGrocery/rest/cart/'+$scope.cartId).success(function (data) {
           $scope.cart=data;

           //CODE BELOW IS FOR TESTING PURPOSES 
           var product = $scope.cart.cartItems[0].product; 
           var item = $scope.cart.cartItems[0]; 

           if(item == null) 
            alert("item is null"); 
           else 
               alert("total price is" + item.totalPrice); 
         if(product == null) 
             alert("product is null"); 
         else 
           alert("product name is" + product.productName); 

        });
    };

 $scope.initCartId = function (cartId) {
        $scope.cartId = cartId;
        $scope.refreshCart(cartId);
    };

这是HTML文件:

 <section class="container" ng-app="cartApp">
            <div ng-controller = "cartCtrl" ng-init="initCartId('${cartId}')">       
            <table class="table table-hover">
                <tr>
                    <th>Product</th>
                    <th>Unit Price</th>
                    <th>Quantity</th>
                    <th>Price</th>                 
                </tr>
                <tr ng-repeat = "item in cart.cartItems">
                    <td>{{item.product.productName}}</td>
                    <td>{{item.product.productPrice}}</td>
                    <td>{{item.quantity}}</td>
                    <td>{{item.totalPrice}}</td>
                </tr>
            </table> 
            </div>

代码的简要说明:

Spring控制器应该将Cart对象传递给AngularJS类。 cart对象包含cartItem对象,其中包含product个对象。

问题:

在AngularJS文件中,当我尝试检索Product对象的任何属性时,我得到null。实际上,整个product对象为null。但是,cartItem对象不为null。例如,我可以检索cartItem.totalPrice的值。

这里奇怪的是,在Spring控制器类中,我明确地打印出了Product对象的值,但它们不是null。所以,我不知道为什么AngularJS会得到一个null产品。请帮忙。

0 个答案:

没有答案