在SpringMVC + angularjs中正确处理哈希映射

时间:2017-05-30 16:36:32

标签: javascript java angularjs

我有AngularJS + SpringMVC项目。 通过GET方法,它返回实体列表,因此我可以将它用于打印对象数据的ng-repeat(例如,名称) 但最近我需要使用hashmap(key - object with fields,value - String)

这是代码的一部分,我用于角度列表

这是对象填充列表中字段的方式 <input type="text" ng-model="currentItem.taskName" class="form-control">

app.controller('mainController',function ($scope, $http) {
$scope.tasks = [];
$scope.currentItem = {};
$scope.currentView = 'allTasks';

$scope.refresh = function () {
   $http({
       method:"GET",
       url:"/task"
   }).then(function (result) {
       $scope.tasks = result.data;
   });
};
$scope.refresh();

$scope.save = function(){
    $http({
        method:"PUT",
        url:"/task",
        data:$scope.currentItem,
        headers:{'X-CSRF-TOKEN':$("meta[name='_csrf']").attr("content")}
    }).then(function(result) {
        for(var i = 0; i < $scope.tasks.length; i++){
            if(result.data.id===$scope.tasks[i].id){
                $scope.tasks.splice(i, 1);
            }
        }
        $scope.tasks.push(result.data);
    });
    $scope.cancel();
};

现在我有了这个控制器:

@GetMapping
    public Map<TaskEntity,String> findAll(){
        user  = (UserEntity) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return taskService.findFromUser(user.getId());
    }

但似乎没有用。 当我使用
时,angular无法找到对象的字段 ng-repeat="(k,v) in tasks" {{k.name}}

但将此k打印为对象名称TaskEntity@3434h43

所以我的问题是:如何正确读取hashmap,并在其中添加项目

1 个答案:

答案 0 :(得分:0)

哪个类负责反序列化后端和前端之间的对象?

如果我在你的鞋子里,首先我会在控制台中打印GET请求的结果,以便检查服务器返回的结构,因为你正在返回一个复杂的结构,也许它不是像你一样呈现期待着。

希望这有帮助!