2014-10-15 2 views
1

У меня есть компонент EXTJS CQ с двумя текстовыми полями и кнопкой.Сообщение данных компонента компонента Adobe CQ EXTJS для сервлета

Когда нажата кнопка «Сохранить», данные диалога должны быть отправлены в пользовательский сервлет сервлета. Пользовательский сервлет сервлета вызовет службу osgi и, наконец, сохранит данные в crx, используя jcr api.

Вопрос: Как отправить данные диалога сервлету?

Я новичок в CQ, Спасибо за любую помощь!

-Sri

ответ

1

Я предполагаю, что когда вы говорите, «сохранить» вы имеете в виду некоторые пользовательские кнопки, а не на кнопку «OK», которая сохраняет диалоговые данные к узлу.

Добавить кнопку handler в кнопку сохранения. Функция обработчика должна извлекать объект диалога, перебирать все поля в нем и отправлять значения в ваш пользовательский сервлет. Обработчик должен быть что-то вроде этого

function(button,event){ 
//fetch dialog using the save button 
    var dialog = button.findParentByType('dialog'); 
    var params = {}; //parameters to post 
    var textfields = dialog.findByType('textfield'); //returns all textfields in the dialog 
    for(i=0;i<textfields.length;i++){ 
     params[textfields[i].name] = textfields[i].getValue(); //add the value to params with name same as the name you have provided to the textfield 
    } 
    $.post("path to your servlet" , params); // you can also use CQ.shared.HTTP of cq's ext js package to do the post 
} 

В случае, если все, что вы хотите сделать, это опубликовать данные формы по нажатию на кнопку «OK», который поставляется по умолчанию, установите formurl свойство диалога на пути вашего пользовательского сервлета. В этом случае, если значения не сохраняются обратно как свойства с соответствующими именами на соответствующем узле, как обычно, диалог не сможет загружать значения при повторном редактировании компонента.

+0

Благодарим вас за ответ! Я думаю использовать метод CQ.HTTP.POST. Я дам ему попробовать. – Sri