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.
SOLVED

RequestParameterMap is behaving differently in AEM 6.3

Avatar

Level 2

When we have parameters in the url, we can use request.requestParameterMap[value] ....It was working fine in 6.1 but in 6.3 after CFP1 installation ,its working only when the url has parameter else its throwing an error "org.apache.sling.api.SlingException: Cannot get DefaultSlingScript: org.apache.sling.api.SlingException: Cannot get DefaultSlingScript: null ".. I tried to validate to put the code only when the url has parameters .but I am not able to check whether the url has parameters or not in sightly ...Any thoughts on this? Thanks

1 Accepted Solution

Avatar

Correct answer by
Level 2

Thanks neelesh for the reply..

It will work only when you have one query parameter but in our case we had two query parameters, For some pages one queryparameter will be used and for some pages the other queryparameter will be used in the same html.

For Example : ?q=&tag=

For that purpose I was validating with this line of code :
<sly data-sly-test="${request.queryString}">  or
<sly data-sly-test="${request.requestParameterMap}" data-sly-unwrap> this will also work.

and also I have written some JS for fetching the two queryparameters and assigning it to some variable in JS itself and returning it in html.


In that way it was fixed.

View solution in original post

6 Replies

Avatar

Level 7

Can you try   <sly data-sly-test.val=${request.requestParameterMap['value'][0].toString} />

Avatar

Level 2

Thanks..
I tried that but its not working after CFP1.
It will work only when you have query parameters in your URL, otherwise its throwing above error.
Its not working even when we are testing the condition using data-sly-test..

Avatar

Administrator

As mentioned by Ankur,

To access the parameter value, you can use ${request.requestParameterMap['test'][0].toString}.

Example: URL: http://server:port/xyz?test=hello

then output would be: hello

Reference point 12:- HTL introduction part 5: FAQ

-Kautuk



Kautuk Sahni

Avatar

Level 2

Currently we do have same code but its not working after installing CFP1 in 6.3..
It will work only when we have queryparameters in URL , otherwise its throwing an error but it was not happened before CFP1

Avatar

Employee

Use this condition as below and let me know ,if it works fine.

<sly data-sly-test="${request.requestParameterMap}" data-sly-unwrap>

${request.requestParameterMap['test'][0].toString}

</sly>

Avatar

Correct answer by
Level 2

Thanks neelesh for the reply..

It will work only when you have one query parameter but in our case we had two query parameters, For some pages one queryparameter will be used and for some pages the other queryparameter will be used in the same html.

For Example : ?q=&tag=

For that purpose I was validating with this line of code :
<sly data-sly-test="${request.queryString}">  or
<sly data-sly-test="${request.requestParameterMap}" data-sly-unwrap> this will also work.

and also I have written some JS for fetching the two queryparameters and assigning it to some variable in JS itself and returning it in html.


In that way it was fixed.