1

ROO を使用して単純な Web アプリケーションを作成し、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 はまだ null です。

ROO は初めてで、JSON コードはすべて自動生成されるため、生成されたファイルのどこを調べればよいかわかりません。

4

1 に答える 1

0

コントローラーの updateFromJson メソッドを見てください。このメソッドにアクセスするには、赤い矢印 (アスペクト マーカー) を右クリックし、[アスペクト宣言] -> [...] をクリックします。これらを表示するには、STS を使用する必要があると思います。

この方法では、次のように表示されます。

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

ここで、リクエスト マッピングに「id」が記載されていないことがわかります。これは、このメソッドを呼び出すために間違ったパスを使用していることを意味します。また、json ペイロードの一部として ID を渡す必要があるため、どのオブジェクトを更新するかがわかります。

于 2012-11-20T17:26:33.377 に答える