选项= / bin中/服务/ myservlet.GET_DROPDOWN_VALUES.json?区域= 'some_locale'
如果我把locale = en-us设置得很好,
如何动态获取当前页面区域设置并将其传递给请求参数?
答案 0 :(得分:1)
因此,您的servlet需要locale作为检索下拉列值的参数之一。我可以想到两个选项来做到这一点。
options=/bin/services/myservlet.GET_DROPDOWN_VALUES.json?compNode=$PATH
。在servlet中,使用$ PATH构建页面对象,然后提到@jwepurchase
,使用page.getLanguage(false)获取区域设置。
String compNodePath = (String) request.getParameter("compNode");
String pagePath = StringUtils.substringBefore(compNodePath, "jcr:content");
PageManager pageMgr = request.getResourceResolver().adaptTo(PageManager.class);
Page page = pageMgr.getContainingPage(pagePath);
Locale pageLocale = page.getLanguage(false);
getLanguage
将在currentpage或其祖先中查找jcr:language属性。将页面的页面属性(高级选项卡)中的“语言”字段(通常在根区域设置页面中设置)设置为适当的值时,将设置此属性。例如:如果您将语言设置为英语(我们),则jcr:语言将为en_us。
答案 1 :(得分:0)
com.day.cq.wcm.api.Page.getLanguage(false)
将返回页面上jcr:language属性的值或发送它的第一个父页面。通常,这不会在每个页面上设置。
如果您在JSP中包含了Adobe的global.jsp或使用了<cq:defineObjects/>
标记,您应该会发现“currentPage”已经在范围内,可以访问Page对象。
我通常有一个自定义taglib函数,以便通过EL访问。但作为一个scriptlet,我希望以下内容可行:
<%= ((Page)getPageContext().getAttribute("currentPage")).getLanguage(false)%>