AEM Servlet ResourceType в URL-адресе AJAX

#javascript #java #ajax #aem

#javascript #java #ajax #aem

Вопрос:

Здравствуйте, я хочу использовать sling ResourceType вместо servletpath .

Итак, это мой исходный путь:

 @Component(service=Servlet.class,
property={"sling.servlet.paths=/bin/jit/ccpa",
          "sling.servlet.extensions=html",
          "sling.servlet.methods="   METHOD_POST}
)
 

И это обновление для ResourceType.

 @Component(service=Servlet.class,
property={"sling.servlet.resourceTypes=" "falcon/components/pages/rwd/page_home",
          "sling.servlet.extensions=html",
          "sling.servlet.selectors=" "sample",
          "sling.servlet.methods="   METHOD_POST}
)
 

Как я должен настроить его для моего вызова ajax?

 $.ajax({
                type: 'POST',
                url: '/bin/jit/ccpa',
                data: data,
                success: function (data) {
                    if (data != "" amp;amp; data != "error") {
                        var res = $.parseJSON(data);
                        if (res === undefined || res === null || res.sendEmailResponse === undefined) {
                            formError(form, container);
                        }
                    }
                error: function () {
                    formError(form, container);
                }
            });
 

Что входит в значение URL-адреса при вызове Ajax?
И правильно ли мое значение ResourceType в моем сервлете, как это обычно получается?

Ответ №1:

Вы можете предоставить эту информацию в модели Sling этого компонента. Затем в htl JS может получить эту информацию и использовать ее для вызовов ajax.

Итак, создайте getter, который возвращает путь к этому ресурсу дополнительно селекторы / расширения на основе того, как вы определяете свой сервлет.

 this.request.getResource().getPath()   ".sample.html";
//or
this.resource.getPath()   ".sample.html";
 

Ответ №2:

Сервлет, прослушивающий тип ресурса, означает, что он будет активироваться всякий раз, когда запрашивается ресурс этого типа. Это означает, что я не могу сказать вам, правильный ли тип ресурса, который вы использовали, и какой будет URL-адрес, потому что это зависит от содержимого вашего репозитория.

С вашими предложенными изменениями вы могли бы создать узел типа nt:unstructured со sling:resourceType свойством, равным falcon/components/pages/rwd/page_home . Если ваш узел находится в /content/your-site/some/path/ccpa , запрос POST на /content/your-site/some/path/ccpa.html попадет в сервлет.

Ответ №3:

Если вы хотите вызвать сервлет из ajax, вам нужно зарегистрировать сервлет только по пути. При регистрации с использованием ResourceType сервлет вызывается только тогда, когда вызывается или загружается компонент, присутствующий в ResourceType .