@ExceptionHandlerを含め、マップされたメソッドへのパラメーターとしてHttpServletResponseを使用するなど、これをいくつかの異なる方法で試しました。
@RequestMapping(value="/update", method=RequestMethod.POST)
public ResponseEntity<String> update(final HttpEntity<String> requestEntity) {
try {
// stuff
return new ResponseEntity<String>("", HttpStatus.NO_CONTENT);
} catch (MyDataException e) {
return new ResponseEntity<String>(e.toJSONString(), HttpStatus.BAD_REQUEST);
}
}
必要なのは、応答本文としてのtoJSONStringの内容だけです。ただし、HttpStatus.BAD_REQUEST値が設定されている場合、システムはデフォルトのTomcatエラーページを使用します。エラーステータスに設定しないと、意図したとおりにボディが作成されます。ただし、エラーステータスを設定する必要があります。
私が言ったように、私はこれをSpring MVC APIで約4つの異なる方法で試しましたが、それらはすべて、私が望む方法で応答を処理する代わりに、sendError()が呼び出されたように見えます。