Expand my Community achievements bar.

SOLVED

selector not working: how to debug?

Avatar

Level 9

I'm doing this in my author instance.

 

so I have a page (/content/my-site/my-page) with sling:resourceType = "core/wcm/components/page/v3/page".

 

In /apps/core/wcm/components/page/v3/page, I created "page.print.html" with the following contents,

 

 

<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <h1>print version</h1>
    </body>
</html>

 

 

When I visited localhost:4502/content/my-site/my-page.print.html, I am expecting to see "print version" in the browser. BUT it seems AEM is ignoring the "print" selector and the request is resolving to page.html instead.

 

Using this tool (http://localhost:4502/system/console/servletresolver), AEM can recognize my selector BUT it's just ignoring it when it renders the page.

 

Any ideas why this is happening? Thanks

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @jayv25585659 
Create a print.html inside /apps/core/wcm/components/page/v3/page



Arun Patidar

View solution in original post

7 Replies

Avatar

Community Advisor

Can you just rename your file  to print.html and give it a try ?

Avatar

Level 2

Hey @jayv25585659 ,

It's how the sling resolution process works.
Rename your file as print.html instead of page.print.html.
Now open localhost:4502/content/my-site/my-page.print.html.

It should work now.

Avatar

Community Advisor

For above use case to work you need to access the complete path of the component authored. So in your case it may be something similar to localhost:4502/content/my-site/my-page/jcr:content/componebt-location-on-page.print.html.

but if you want the selector to work at  localhost:4502/content/my-site/my-page.print.html then you need to implement your custom servlet as explained on https://taradevko.com/aem/sling-selector-best-practice/ or you can also implement sling exporter as explained on http://www.sgaemsolutions.com/2017/06/sling-model-exporter-in-aem-63.html?m=1

Avatar

Community Advisor

Hi @jayv25585659 ,

There could be several reasons why the selector is not working as expected in your AEM instance. Here are some steps you can take to debug the issue:

1. Check the Sling Mapping configuration: Ensure that there are no conflicting mappings or rules that could be overriding the selector. You can check the Sling Mapping configuration in the AEM Web Console (`http://localhost:4502/system/console/configMgr`) under the "Apache Sling Resource Resolver Factory" configuration.

2. Verify the resource type and selector: Double-check that the `sling:resourceType` property of your page is set correctly to `"core/wcm/components/page/v3/page"`. Also, confirm that you are accessing the page with the correct URL, including the selector (`/content/my-site/my-page.print.html`).

3. Check the Apache Sling Servlet Resolver: The Apache Sling Servlet Resolver is responsible for mapping requests to the appropriate servlets or scripts based on the request URL. You can use the Servlet Resolver tool (`http://localhost:4502/system/console/servletresolver`) to verify that the correct servlet or script is being resolved for your request.

4. Review the Apache Sling Resource Resolution: AEM uses Apache Sling's resource resolution mechanism to determine the appropriate resource to render for a given request. You can enable debug logging for Apache Sling Resource Resolution to get more information about how the resolution process is happening. To enable debug logging, go to the AEM Web Console (`http://localhost:4502/system/console/slinglog`) and set the log level for `org.apache.sling.resourceresolver` to `DEBUG`.

5. Clear AEM caches: Sometimes, caching can cause issues with resource resolution. Try clearing the AEM caches by going to the AEM Web Console (`http://localhost:4502/system/console/cache`) and clicking on "Clear All Caches".

By following these steps, you should be able to identify the cause of the issue and debug why the selector is not working as expected in your AEM instance.

Avatar

Correct answer by
Community Advisor

Hi @jayv25585659 
Create a print.html inside /apps/core/wcm/components/page/v3/page



Arun Patidar

Avatar

Community Advisor

hi @jayv25585659 

 

As @arunpatidar  mentioned, the file is wrongly named, it should be print.html NOT page.print.html

 

Hope this helps



Esteban Bustamante

Avatar

Administrator

@jayv25585659 Did you find the suggestions from users helpful? Please let us know if you require more information. Otherwise, please mark the answer as correct for posterity. If you've discovered a solution yourself, we would appreciate it if you could share it with the community. Thank you!



Kautuk Sahni