Я создал строп сервлета скелет, как так ...CQ5 компонент afteredit
@SlingServlet(paths = "/bin/foo/bar", methods = "POST")
public class FooBarServlet extends SlingAllMethodsServlet {
private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
response.setHeader("Content-Type", "text/plain");
response.getWriter().write("foo bar");
LOGGER.info("hello world");
}
}
Я создал редактирования конфигурации для моего компонента
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:EditConfig">
<cq:listeners jcr:primaryType="cq:EditListenersConfig"
afteredit="myapp.components.foobar" />
</jcr:root>
Я создал cq:ClientLibraryFolder
и добавил это Js к нему
var myapp = { components : {} };
myapp.components.foobar = function(component, reloadPage) {
var oncomplete = function(success) {
if (success) {
if (reloadPage) document.location.reload();
else component.refreshSelf();
} else
console.log('could not foobar on component ' + component.path);
};
CQ.HTTP.post('/bin/boo/bar', oncomplete, { path : component.path });
};
Моя страница загружается, компоненты загружаются, my clientlib js загружается, я не вижу ошибок в консоли. Я редактирую свой компонент и нажимаю ОК. Мой сервлет попал, я забираю сторону сервера журналов и не вижу ошибок. Я не вижу ошибок на стороне клиента, когда открываю консоль для отслеживания. Мой ответ 200 нормально. Все отлично! Кроме того, что я постоянно получаю «Неизвестная ошибка» в правом верхнем углу моего браузера
Кто-нибудь знает, где я даже начать устранять это учитывая, что я не вижу никаких ошибок на бревне на стороне сервера, и никаких ошибок на стороне клиента?
Update
Благодаря @ rakhi4110 для ссылки на CQ.HTTP. Я был в состоянии придумать какой-то материал из этой документации
Первый, установив suppressErrorMsg
флаг прятали сообщение об ошибке
CQ.HTTP.post('/bin/foo/bar', oncomplete, { path : component.path }, null, true);
Второй, мне не нравится, чтобы подавить вещи, поэтому я попытался для обработки моего ответа так
{
"headers" :
{
"Status":200,
"Message":"foo bar"
}
}
Однако это ничего не сделало.
Третий, глядя на CQ.HTTP api, я заметил, что многие из них были лишены в пользу CQ.shared.HTTP. Просто с помощью функции после этого, без Подавить работал
CQ.shared.HTTP.post('/bin/foo/bar', oncomplete, { path : component.path });
Пока я придерживаюсь варианта № 3, пока я не могу понять, правильный ответ JSon.
Подавить работал. Я попытался создать ответ json вроде {"headers": {"Status": 200, "Message": "foo bar"}}. Любые указатели на правильный ответ json? –