-1

Spring REST アプリケーションを作成しました。curl コマンドでテストしたところ、本当にうまくいきました。

別の GWT Ajax アプリケーションには、Spring Rest で動作しない RequestBuilder オブジェクトがあります。sendRequest メソッドを呼び出した後、イベントonResponseReceivedは発生しますが、getTextメソッドは空の文字列を返します。

これは私の春のservlet.xml構成ファイルの一部です

<bean id="jsonmembertemplate" 
      class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" >
    <property name="contentType" value="text/javascript;charset=UTF-8"/>
    <property name="disableCaching" value="false"/>
</bean>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 

そして私のコントローラークラスの一部

@RequestMapping(method = RequestMethod.GET, value="/member/get/{memberid}")
public String getMember(Model model, @PathVariable("memberid") int id, HttpServletResponse response) {
    model.addAttribute("member", memberDao.get(id));
    return "jsonmembertemplate";
}

およびgwtコード

private RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, "http://localhost:8080/depna-nat-server/member/get/1?");



try {
                rb.setHeader("Content-Type", "text/javascript;charset=UTF-8");
                rb.sendRequest(null, new RequestCallback() {

                    @Override
                    public void onResponseReceived(Request request, Response response) {
                        Window.alert(Integer.toString(response.getStatusCode()));
                        Window.alert(response.getStatusText());
                        Window.alert(Integer.toString(response.getText().length()));
                        area.setText(response.getText());
                    }

                    @Override
                    public void onError(Request request, Throwable exception) {
                        Window.alert("fail");
                    }
                });
            } catch (RequestException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
4

1 に答える 1

0

Spring が提供する json および xml レスト サービスで動作する gwt アプリケーションがいくつかあります。これらのサービスはサードパーティ アプリにも提供されるため、gwt (rpc または rf) の代わりに spring を使用します。

RequestBuilder を使用して最初のプロジェクトを開始しましたが、問題はありませんでした。コードに問題がある可能性があります。トラフィックを調べて、発生したエラーを投稿していただけますか?

クロスドメインの問題 (statusCode=0 は通常それを意味します) を実行している場合は、サーブレット コンテナーにフィルターを追加し、このドキュメントを参照してください。

最終的にgwtquery-ajaxgquery-data-bindingを使用することにしました。これにより、これらのサービスの利用と Java オブジェクトへのマッピングが非常に簡単になったからです。

于 2012-12-21T08:58:39.087 に答える