Content management system AEM:如何将当前页面路径从jsp传递到对话框
我有一个国家选择下拉列表,我使用选择器从servlet填充该下拉列表: 目前,我正在将区域设置作为请求参数传递Content management system AEM:如何将当前页面路径从jsp传递到对话框,content-management-system,aem,Content Management System,Aem,我有一个国家选择下拉列表,我使用选择器从servlet填充该下拉列表: 目前,我正在将区域设置作为请求参数传递 options="/bin/services/dropdownservlet.GET_DROPDOWN_VALUES.json?locale=$PATH" 现在我想传递一个区域设置作为另一个选择器。为此,我正在考虑一种方法,从jsp to对话框获取currentPage.path,并将其作为第二个选择器传递。我该怎么做 options="/bin/services/dropdowns
options="/bin/services/dropdownservlet.GET_DROPDOWN_VALUES.json?locale=$PATH"
现在我想传递一个区域设置作为另一个选择器。为此,我正在考虑一种方法,从jsp to对话框获取currentPage.path
,并将其作为第二个选择器传递。我该怎么做
options="/bin/services/dropdownservlet.GET_DROPDOWN_VALUES.CURRENTPATH"
是否有一种方法可以将servlet中的页面路径作为字符串获取,我可以使用该字符串触发servlet以下是获取页面的方法,包括客户端或服务器端: JavaScript:
var currentPagePath = null;
/* if accessed via siteadmin */
if(CQ.wcm.SiteAdmin.hasListSelection()) {
var grid = CQ.wcm.SiteAdmin.getActiveGrid();
var selections = grid.getSelectionModel().getSelections();
/*Assuming that you are selecting only one page at a time. */
currentPagePath = selections[0].id;
} else { /* accessed via page */
currentPagePath = CQ.WCM.getPagePath();
}
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
String callingPage = request.getParameter("callingPage");
String callingPagePath = pageManager.getPage(callingPage).getPath();
Java:
var currentPagePath = null;
/* if accessed via siteadmin */
if(CQ.wcm.SiteAdmin.hasListSelection()) {
var grid = CQ.wcm.SiteAdmin.getActiveGrid();
var selections = grid.getSelectionModel().getSelections();
/*Assuming that you are selecting only one page at a time. */
currentPagePath = selections[0].id;
} else { /* accessed via page */
currentPagePath = CQ.WCM.getPagePath();
}
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
String callingPage = request.getParameter("callingPage");
String callingPagePath = pageManager.getPage(callingPage).getPath();
请参见假设servlet返回JSON,例如:
[{"text" : "first option", "value" : "alpha"}, {"text" : "second option", "value" : "bravo"}]
您可以使用optionsProvider运行JavaScript函数,在该函数中可以动态设置您的请求:
<product
jcr:primaryType="cq:Widget"
name="./product"
fieldLabel="Product"
type="select"
xtype="selection"
optionsProvider="function() {
var selectors = ['GET_DROPDOWN_VALUES', 'myselector'];
var url = CQ.shared.HTTP.addSelectors('/bin/services/dropdownservlet.json', selectors);
return CQ.Util.formatData(CQ.shared.HTTP.eval(CQ.shared.HTTP.noCaching(url)));
}"/>
但是,我不会使用路径作为选择器。使用页面路径中的斜杠,Sling将页面路径视为扩展名和后缀,而不是选择器。我可能会像您当前所做的那样,将路径作为后缀或查询参数传入
请注意,我不会将JavaScript函数保留在dialog.xml文件中,而是将其移动到外部JS文件中