Skip to main content
marioni26732008
New Participant
August 22, 2016

aem 6.2 SlingRequestPathInfo suffix

  • August 22, 2016
  • 9 replies
  • 3923 views

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?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

9 replies

marioni26732008
New Participant
August 23, 2016

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

antoniom5495929
New Participant
August 23, 2016

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

marioni26732008
New Participant
August 23, 2016

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); %>
antoniom5495929
New Participant
August 22, 2016

Could you provide us the example code you are using? 

It's an OSGi component? 

marioni26732008
New Participant
August 22, 2016

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() ; }
antoniom5495929
New Participant
August 22, 2016

Try to check this line:

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

Let me know what is the output.

smacdonald2008
New Participant
August 22, 2016

Are you getting an error or exception? 

marioni26732008
New Participant
August 22, 2016

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