Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.

aem 6.2 SlingRequestPathInfo suffix

Avatar

Level 2

Hello, when i create a page, i create a select (datasource) in the properties. in my datasource, i want recover the path of the page. for example : http://localhost:4502/mnt/overlay/wcm/core/content/sites/createpagewizard.html/content/geometrixx/fr, i want recover  /content/geometrixx/fr.

 

with aem 6.1 , with this code "slingRequest.getRequestPathInfo().getSuffix()", it's ok, but with aem 6.2, it don't ok. i recover le template path :/apps/geometrixx/templates/homepage.

 

how to get the right path, please?

9 Replies

Avatar

Level 10

Are you getting an error or exception? 

Avatar

Level 2

i recover some think with ""slingRequest.getRequestPathInfo().getSuffix()"" but not the good.

i should recover /content/geometrixx/fr. and i recover /apps/geometrixx/templates/homepage

Avatar

Level 7

Could you provide us the example code you are using? 

It's an OSGi component? 

Avatar

Level 2

no, not a OSGI component. just, a property when i create a page

the problem is only the page creation.

Here the property : 

<searchLogic jcr:primaryType="nt:unstructured"          sling:resourceType="granite/ui/components/foundation/form/select"          cq:showOnCreate="{Boolean}true"             renderReadOnly="{Boolean}true"          fieldLabel="page.search.searchLogic"          name="./searchLogic">    <datasource            jcr:primaryType="nt:unstructured"            sling:resourceType="global/components/content/datasource/datasourceSearchLogic"/></searchLogic>

and the begin of the code in datasource is : 

if(StringUtils.isNotEmpty(slingRequest.getRequestPathInfo().getSuffix())){ path = slingRequest.getRequestPathInfo().getSuffix(); }else{ path = slingRequest.getRequestParameter("item").getString() ; }

Avatar

Level 7

Try to check this line:

String contentPath = (String) request.getAttribute("granite.ui.form.contentpath");

Let me know what is the output.

Avatar

Level 2

this is code of the datasource. However, the issue is related to the slingRequest.getRequestPathInfo().getSuffix() which does not return the correct value.

<% %><%@include file="/libs/granite/ui/global.jsp"%><% %><%@page session="false"          import="java.util.Arrays,                java.util.List,com.day.cq.wcm.api.Page, java.util.ArrayList,org.apache.commons.lang.StringUtils, java.util.Locale, java.util.HashMap, java.util.Map, java.util.Collections, org.apache.commons.collections.Transformer, org.apache.commons.collections.iterators.IteratorChain, com.day.cq.search.PredicateGroup, com.day.cq.search.Query, com.day.cq.search.QueryBuilder, org.apache.commons.collections.iterators.TransformIterator, org.apache.sling.api.resource.ResourceMetadata, org.apache.sling.api.resource.ResourceResolver, org.apache.sling.api.wrappers.ValueMapDecorator, com.adobe.granite.ui.components.Config, com.adobe.granite.ui.components.ds.DataSource, com.adobe.granite.ui.components.ds.SimpleDataSource, com.adobe.granite.ui.components.ds.ValueMapResource, com.day.cq.tagging.Tag, javax.jcr.Node, com.day.cq.search.result.Hit, javax.jcr.Session, com.google.common.collect.Lists, java.util.Iterator, com.day.cq.wcm.api.PageManager, lu.etat.ctie.services.search.*, com.day.cq.tagging.TagManager"%><%String path =""; if(StringUtils.isNotEmpty(slingRequest.getRequestPathInfo().getSuffix())){ path = slingRequest.getRequestPathInfo().getSuffix(); }else{ path = slingRequest.getRequestParameter("item").getString() ; } Resource siteConfigResource = resourceResolver.resolve(path); PageManager pageManager = resourceResolver.adaptTo(PageManager.class); String pathPage = pageManager.getContainingPage(siteConfigResource).getPath(); SearchLogicConfigurationService search = (SearchLogicConfigurationService)sling.getService(SearchLogicConfigurationService.class); List<SearchLogicConfigurationFactory> listSearchLogic = search.getListConfigurationFactoryForPath(pathPage); final ResourceResolver resolver = resourceResolver; @SuppressWarnings("unchecked") DataSource ds = new SimpleDataSource(new TransformIterator(listSearchLogic.iterator(), new Transformer() { public Object transform(Object o) { ValueMap vm = new ValueMapDecorator(new HashMap<String, Object>()); try{ SearchLogicConfigurationFactory searchLogic = (SearchLogicConfigurationFactory)o; vm.put("value", searchLogic.getSearchLogic()); vm.put("text", searchLogic.getSearchLogic()); } catch (Exception e) { System.out.println(e.getMessage() ); } return new ValueMapResource(resolver, new ResourceMetadata(), "nt:unstructured", vm); } })); request.setAttribute(DataSource.class.getName(), ds); %>

Avatar

Level 2

no, in a page. for example :  /apps/geometrixx-outdoors/components/page, in the cq:dialog

Avatar

Level 7

I send you a private message in order to have more details.