問題がどこにあるのかはよくわかりませんが、次のことがわかります。
最初にGWTRequestBuilderを使用しました:
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, "/myRESTResource/test");
rb.setHeader("Content-Type", "application/json");
rb.setRequestData("");
rb.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
Window.alert(response.getText());
}
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception);
}
});
rb.send();
私の春のコントローラー:
@Controller
@RequestMapping("/myRESTResource")
public class TranslationController {
@RequestMapping(value="/{param}", method=RequestMethod.GET)
public @ResponseBody String get(@PathVariable("param") String param, HttpServletResponse response) {
// get some data and output it as JSON
}
}
Chrome-Browserで、で返された応答を確認できますContent-type: text/html; charset=iso-8859-1
。Window.alert()
大丈夫だった。
今、私はrestygwtに切り替えたいと思いました。私が使用しているResource
:
Resource r = new Resource("myRESTResource/test");
r.get().send(new JsonCallback() {
@Override
public void onSuccess(Method method, JSONValue response) {
Window.alert(response.toString());
}
@Override
public void onFailure(Method method, Throwable exception) {
Window.alert(exception.getLocalizedMessage());
}
});
ここで私のSpringControllerは。で戻りますContent-type: application/json
。ASCII文字のWindow.alert()
場合は問題ありませんが、特別なものはすべて、内部に疑問符が付いたブラックボックスになります。この問題は、GWT開発モード(統合されたJettyを備えたEclipse 4.2)で発生し、外部のTomcat7にもデプロイされます。
restygwtを使用して置く場合
response.setCharacterEncoding("ISO-8859-1");
Spring Controller内では、Window.alert()
期待どおりにデータが表示されます。
response.setCharacterEncoding("ISO-8859-1");
すべてのControllerメソッドの内部に書き込みたくないことは明らかです。
これを修正する簡単な方法があるといいのですが。ありがとうございました。