我有一个带有两个文本字段和按钮的EXTJS CQ组件。
当"保存"单击按钮,对话框数据必须提交到自定义吊索servlet。 自定义吊索servlet将调用osgi服务,最后使用jcr api将数据保存到crx。
问题:如何将对话框数据发布到servlet?
我是CQ的新手,感谢您的帮助!
-SRI
答案 0 :(得分:1)
我假设当你说“保存”时你指的是一些自定义按钮,而不是将对话框数据保存到节点的“确定”按钮。
在保存按钮中添加handler。处理函数必须检索对话框对象,遍历其中的所有字段并将值发布到自定义servlet。处理程序应该是这样的
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
}
如果您要执行的操作是在点击默认情况下出现的“确定”按钮时发布表单数据,请将对话框的 formurl 属性设置为您的路径自定义servlet。在这种情况下,如果值没有像对话框那样在相应节点上作为具有适当名称的属性存储回来,则在重新编辑组件时,对话框将无法加载值。