1

我得到了一个带有两个文本字段和一个按钮的 EXTJS CQ 组件。

单击“保存”按钮时,必须将对话框数据提交给自定义 sling servlet。自定义 sling servlet 将调用 osgi 服务,最后使用 jcr api 将数据保存到 crx。

问题:如何将对话数据发布到 servlet?

我是CQ的新手,感谢您的帮助!

-斯里兰卡

4

1 回答 1

1

我假设当您说“保存”时,您指的是某个自定义按钮,而不是将对话框数据保存到节点的“确定”按钮。

处理程序添加到保存按钮。处理函数必须检索对话框对象,遍历其中的所有字段并将值发布到您的自定义 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 的路径。在这种情况下,如果没有像对话框通常那样将值作为具有适当名称的属性存储回相应节点上,则在重新编辑组件时对话框将无法加载这些值。

于 2014-10-15T11:31:03.673 回答