gpt4 book ai didi

json - 如何在Grails中更新现有JSON对象的参数?

转载 作者:行者123 更新时间:2023-12-02 14:50:51 25 4
gpt4 key购买 nike

我正在做一个待办事项 list 。第一次输入该项目并将其添加到列表中时,服务器运行良好。它采用用户选择的参数,并将它们传递到服务器上的列表中,可以通过呈现Item.list()来查看它,如下所示:

[{"class":"server.Item","id":1,"assignedTo":"User 1","comments":null,"completed":false,"creator":"User 1","name":"Task 1","priority":"1","type":"Personal"},
{"class":"server.Item","id":2,"assignedTo":"User 2","comments":null,"completed":false,"creator":"User 2","name":"Er","priority":"3","type":"Work"},
{"class":"server.Item","id":3,"assignedTo":"User 1","comments":null,"completed":false,"creator":"User 2","name":"Ga","priority":"1","type":"Work"}]

现在,用户可以选择以后编辑任务。在客户端,这可以正常工作,但随后我需要用户能够保存新的更新任务。

这是我当前的更新功能:
def updateList() {
def newItem = Item.findById(request.JSON.id)

newItem.assignedTo = request.JSON.assignedTo
newItem.comments = request.JSON.comments
newItem.completed = request.JSON.completed
newItem.creator = request.JSON.creator
newItem.name = request.JSON.name
newItem.priority = request.JSON.priority
newItem.type = request.JSON.type
newItem.save(flush: true)
render newItem as JSON
}

但是,这不起作用。我收到一个空指针异常,该异常指示“无法在空对象上设置属性“assignedTo”。我假设findById请求没有为JSON对象获取任何东西,因此没有对象可以向其分配值,但是我没有不知道问题在考虑什么,实际上这些项已放入Item.list()中。

这是通过客户端上的以下JS函数调用的:
$scope.updateList = function() {
angular.forEach($scope.items, function (item) {
// serverList.save({command: 'updateList'}, item);
$http.post('http://localhost:8080/server/todoList/updateList', item)
.success(function(response) {})
.error(function(response) {alert("Failed to update");});
});
};

最佳答案

这可能取决于您的Grails版本,但是您应该可以执行以下操作:

def update(Item item) {
if (!item) {
// return a 404
} else {
// you should really use a service and not save
// in the controller
itemService.update(item)
respond item
}
}

由于JSON参数中有一个ID,Grails足够聪明地查找该项目,并正确填充对象。

关于json - 如何在Grails中更新现有JSON对象的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com