这是我的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产品。请帮忙。