プットを行うためにrooに接続されているWebサービスに電話をかけています。サーバー側のPUTハンドラーに呼び出しをルーティングするために、HiddenHttpMethodFilterを使用しています。私のPutメソッドサービス側はそのように見えます。
@RequestMapping(value = "/{chainId}", method = RequestMethod.PUT, headers = "Accept=application/json")
public ResponseEntity<String> updateUser(@PathVariable("chainId") String chainId, @RequestBody MultiValueMap<String, String> form) {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Access-Control-Allow-Origin", "*");
Chain chain = Chain.findChain(chainId);
GymMember gymMember = new GymMember();
gymMember.setMembershipId(form.getFirst("membershipId"));
gymMember.setEmail(form.getFirst("email"));
gymMember.setEmail(form.getFirst("name"));
gymMember.setEmail(form.getFirst("age"));
gymMember.setEmail(form.getFirst("sex"));
gymMember.setChainId(chain);
if (gymMember.merge() == null) {
return new ResponseEntity<String>(headers, HttpStatus.NOT_FOUND);
}
return new ResponseEntity<String>(headers, HttpStatus.OK);
}
このメソッドの呼び出しはここに到達しますが、@RequestBodyMultiValueMapフォームには常にデータがありません。デバッグしてその内容を見ると、{}として表されます。
私の電話はここで見ることができます
Request URL:http://localhost:9080/FitFriendsService/gymmembers/1006
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:8888
Referer:http://localhost:8888/fitFriends/profile.html?chainId=1006&membershipId=testing&email=testing
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Form Dataview URL encoded
_method:PUT
membershipId:testing
email:testing
name:John Forgintonagwhaaa
age:33
sex:Male
HTMLガイドラインに従ってputリクエストを使用してフォームデータを送信できないことを読みましたが、これが正しいかどうかはわかりません。Spring rooがそのフォームデータを取得できるようにする方法を知っているなら、それは大いにありがたいです!ありがとう!