2017-10-03 15 views
0

私は次のようになり、クライアント側、上の生のAJAX呼び出しを作っています、XmlHttpRequestのとAEMサーブレット

var url = '/bin/denisa/dummyServlet'; 
var xhr = new XMLHttpRequest(); 
xhr.open('GET', url); 
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); 
xhr.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01'); 
xhr.onload = function() { 
if (xhr.status === 200) { 
alert('deni'); 

} 
    else { 
    alert('Request failed. Returned status of ' + xhr.status); 
    } 
}; 
xhr.send(); 
AEMで次のサーブレットへ

@Component(
    service = { 
    Servlet.class 
    }, 
    property = { 
    "sling.servlet.paths=/bin/denisa/dummyServlet", 
    "sling.servlet.extensions=json", 
    "sling.servlet.methods=GET" 
    } 
) 
public class DummyServlet extends SlingSafeMethodsServlet { 

    private static final Logger LOG = LoggerFactory.getLogger(DummyServlet .class); 

    @Reference 
    private dummyService dummyService; 

    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { 

    Gson gson = new Gson(); 
    JsonElement jsonElement = gson.toJsonTree(dummyService); 
    response.setContentType("application/json"); 
    response.getWriter().write(gson.toJson(jsonElement)); 
    } 
} 

そして、私は404を得ました私はパスが同じで、なぜcontentTypesなのか正確には分からない。誰かが手掛かりを持っていますか?

答えて

0

あなたのコードがよさそうだ、あなたがサービスID xxのタイプをバンドルし、サーブレット をチェックするプロジェクトを展開しますが、フェリックス・コンソールに http://localhost:4502/system/console/bundles

にログインすることができます何かが設定側

に欠けているようです:javax.servlet.Servletおよびその他の詳細 *バンドルがインストールされておらず、アクティブな状態であることを確認する

http://localhost:4502/system/console/configMgrに行き、Apache Sling Servlet/Script Resolver execution paを確認します。 thsには/ bin/entryが含まれています

上記のコンフィグレーションがhttp://localhost:4502/system/console/servletresolver に移動すると、サーブレットの応答をチェックします。

これは、解決に役立つ設定の一部です。404

関連する問題