Spring MVC フレームワークで GWT からコントローラーに JSON メッセージを投稿しようとしています。スプリング コントローラーは GWT からリクエストを受信していますが、リクエストのコンテンツの長さと request.toString() を出力すると、コンテンツの長さが 0 と表示され、request.toString() の出力にはコンテンツがありません。
以下は私のコードと出力です:
以下は、JSON メッセージの投稿を実行する GWT コードです。
@UiHandler("saveButton")
void onClick(ClickEvent e) {
UserAddJSO jso = (UserAddJSO)JavaScriptObject.createObject().cast();
jso.setFirstName("Alex");
jso.setLastName("Cheng");
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "addUser.aj");
builder.setHeader("Content-Type", "application/json");
builder.setRequestData(new JSONObject(jso).toString());
System.out.println("request data :"+builder.getRequestData());
try
{
builder.sendRequest(null, new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
Window.alert("on error");
}
public void onResponseReceived(Request request, Response response)
{
Window.alert("response received :"+response.getStatusCode());
Window.alert(response.getText());
}
});
}
catch (RequestException excp)
{
Window.alert("exception catched");
}
}
上記のコードから、リクエスト データが出力されていることがわかります。json 文字列がそこにあります。
以下は私のSpringコントローラーです:
@RequestMapping(value = "**/addUser.aj", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public List<UserAddDTO> getPostStocks(HttpServletRequest request, HttpServletResponse response) throws IOException
{
List<UserAddDTO> userDTO = new ArrayList<UserAddDTO>();
JSONObject jObj;
jObj = new JSONObject(request.getParameterMap());
System.out.println(jObj.toString());
System.out.println("xxxxxxxxxxxxx "+request.toString());
System.out.println("content type :"+request.getContentType());
System.out.println("inside post method");
return userDTO;
}
以下は、上記の出力からの出力です。
request data :{"firstName":"Alex", "lastName":"Cheng"}
content type :application/json
content length :0
inside post method
{}
xxxxxxxxxxxxx POST /addUser.aj HTTP/1.1
Accept: */*
Referer: http://127.0.0.1:8888/AlliumApp.html?gwt.codesvr=127.0.0.1:9997
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Tablet PC 2.0; BRI/2)
Accept-Encoding: gzip, deflate
Host: 127.0.0.1:8888
Connection: Keep-Alive
Content-Type: application/json
Content-Length: 0
Cache-Control: no-cache
上記の出力から、JSON メッセージがリクエスト内にあることがわかります。しかし、コントローラーに到達すると、JSON メッセージはもう存在しません。だから私はjsonメッセージの投稿と受信のために正しい方法をやっていますか?