1

我已经用 ROO 构建了一个简单的 webapp,并添加了 JSON 支持。POST、GET 和 DELETE 工作正常,但是我发出的任何 PUT 请求都会通过 200 OK 消息得到确认,然后什么也没有发生 - 见下文:

**curl -i -X PUT -H "Content-Type: application/json" -H "Accept: application/json" -d '{regexDef:"test99"}' http://myserver:8080/emdr/valuedomains/55

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=utf-8
Content-Length: 82
Date: Mon, 19 Nov 2012 17:35:44 GMT
{"datatype":"test22","id":55,"regexDef":null,"unitOfMeasure":"test99","version":0}MacBook-Pro:bin$** 

目的是更新 regexDef 字段,但是虽然我从服务器收到 http 200 OK 消息,但应用程序并未按要求更新对象,如返回所示 - regexDef 仍然为空。

作为 ROO 的新手,并且由于所有 JSON 代码都是自动生成的,我不确定在生成文件中的确切位置,因此非常感谢任何帮助。

4

1 回答 1

0

查看控制器中的 updateFromJson 方法。您可以通过单击红色箭头(方面标记)上的右键然后单击 Aspect Declarations -> ... 来达到此方法。我认为您需要使用 STS 才能看到这些。

在这种方法中,我看到了:

@RequestMapping(method = RequestMethod.PUT, headers = "Accept=application/json")
public ResponseEntity<String> AthleteController.updateFromJson(@RequestBody String json) {

您可以在这里看到请求映射中没有提及“id”。这意味着您使用错误的路径来调用此方法。此外,您需要将 id 作为 json 有效负载的一部分传递,以便它知道要更新哪个对象。

于 2012-11-20T17:26:33.377 回答