Expand my Community achievements bar.

SOLVED

Get parameter values from component

Avatar

Level 2

Hi @All i had created an component with drop down the data source i get from servelet like :

<datasource 

jcr: primaryType:"nt: unstructured"

Sling: resourceType="/myservlet/path" />

It's possible to get parameter value from this datasource to my java model?

And what i am trying to do is dynamically populate value based on first drop down bring out the values on second dropdown like in first drop down choosing India the states of India bring out in second one?  What are ways to make it as possible please 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor
7 Replies

Avatar

Community Advisor

@Dilli_babu_22 What parameter value you want to pass? how would you fetch the value from?

Avatar

Community Advisor

Hi @Dilli_babu_22 , not sure what the ask is here but if you want some additional data to your java servlet, you can add properties to the node and read them in your servlet by getting resource valuemap.

Hope this helps,

Thanks,

Krishna

Avatar

Community Advisor

Hi @Dilli_babu_22 , Your question is a little confusing, but as far as I understand, below are the solutions.

If your data source structure is as below and you want to get the value of the tag path in the servlet class, then you can get it with the help of a resource.

<!-- # cq:dialog xml -->
<items jcr:primaryType="nt:unstructured">
<colorTags
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/select"
fieldDescription="Select the color tags"
fieldLabel="Color Tags"
multiple="{Boolean}true"
name="./colorTags">
<datasource
jcr:primaryType="nt:unstructured"
sling:resourceType="/bin/colorTagLists"
tagsPath="/content/cq:tags/learning/color"/>
</colorTags>
</items>
<!-- # cq:dialog xml -->

Getting tagsPath in servlet class :

resourceResolver = request.getResourceResolver();
pathResource = request.getResource();
resourceList = new ArrayList<>();

/* Getting AEM Tags Path given on datasource Node */
String tagsPath = Objects.requireNonNull(pathResource.getChild("datasource")).getValueMap().get("tagsPath", String.class);
assert tagsPath != null;

Please refer to this article for full details - https://unlocklearning.in/dynamic-dropdown-in-aem/ 

I hope this could help you!!!

Regards

Shiv

 

 

Shiv Prakash

Avatar

Correct answer by
Community Advisor

Avatar

Level 2

Thanks @arunpatidar bro and all others to. Without using js it's possible bro ? 

Avatar

Community Advisor

Hi,

The datasource loads the dropdown at page/dailog load. If you want to change the values in the second dropdown list, you have to do it on the change event. This can only be done using Javascript.



Arun Patidar