0

dojoツールキットを使用してRESTWebサービスを呼び出そうとしていますが、この呼び出しでいくつかの問題が発生しているようです。これはdojoを使用した呼び出しです。

    dojo.xhrGet({
  url: 'http://localhost:9080/TestJMSWeb/jaxrs/categories/all',
  handleAs: 'json',
  timeout: 2000,
  load: callback
});
var callback = dojo.hitch(this, function(data) {
  var massagedData = {
    label: 'categorie',
    identifier: 'id',
    items: data
  }
  this.store = new dojo.data.ItemFileReadStore({data: massagedData});
  });

Webサービスコードはここにあります

@GET
    @Path("/all")
@Produces("application/json")
public JSONArray getAllCategories() throws IOException {
    final List<Categorie> allCategories = manager.getCategories();
    if (allCategories == null || allCategories.isEmpty())
        throw new WebApplicationException(ErrorUtil.jSONArrayResponse(Status.NO_CONTENT, "No category found"));
    JSONArray jsonArray = jsonCustomerArray(allCategories);
    return jsonArray;

}

Webサービスを呼び出すと、エラーメッセージが表示されます

ResourceRegis I org.apache.wink.server.internal.registry.ResourceRegistry filterDispatchMethods The system cannot find any method in the ressources.CategorieRessouce class that supports OPTIONS. Verify that a method exists.
[4/24/12 1:23:41:531 GMT] 0000002f SystemErr     R 0  TestJMSWeb  INFO   [WebContainer : 0] openjpa.Runtime - OpenJPA dynamically loaded a validation provider.

.xhrGet関数を使用しているときに、OPTIONSメソッドを使用してリソースを呼び出そうとしているようです。何が問題なのですか。

4

1 に答える 1

0

問題を説明するリンクは次のとおりです: http://engin.bzzzt.biz/2010/01/22/first-dojo-impression/

男は、それがクロスドメインリクエストであり(ポートのためにあなたのものだと私は信じています)、リクエストにいくつかの Access-Control-* HTTP ヘッダーが含まれている場合、ブラウザがリクエストを GET ではなく OPTIONS として送信する方法について話します。

Dojo は、クロスドメイン要求を行っていると判断すると、Access-Control-* ヘッダーを追加します。dojo/_base/xhr.js に移動して、次の行 (723 から 729) をコメントアウトすることで、これを自分で修正することができます。

// FIXME: is this appropriate for all content types?
if(args.contentType !== false){
    xhr.setRequestHeader("Content-Type", args.contentType || _defaultContentType);
}
if(!args.headers || !("X-Requested-With" in args.headers)){
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}

私はまだこの修正を試していないので、うまくいくかどうか教えてください!

于 2012-04-24T13:55:14.380 に答える