#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 .