Expand my Community achievements bar.

July 31st AEM Gems Webinar: Elevate your AEM development to master the integration of private GitHub repositories within AEM Cloud Manager.

Dynamically populate selection dropdown in a dialog with a datasource using JSON


Level 4

Hi ,


I want to create a "Dynamically populate selection dropdown in a dialog with a datasource using JSON" have any perfect reference please ping me how to do step wise function.

1 Accepted Solution


Correct answer by
Employee Advisor
6 Replies


Correct answer by
Employee Advisor


Community Advisor

@keshava219  You can create datasource node structure with sling:resourceType of datasource as sling:resourceType (String) = /bin/dropdownList ( i.e. Path of the servlet implementing the data source for dynamic value). It will give the desire result of a dynamic dropdown as you can see below the screenshot.






For DataSource Servlet (/bin/dropdownList) Implementation you can refer to below articles:



Hope this helps



Level 4

hi @ShaileshBassi,


                 Thanks, this was helpfull But  I want to pass along with parameters as well to servlet from dialog which author mention




             On dialog  i have numerical number i want to pass to servlet  this value  possible?


Level 7

Hi @keshava219 

you should write dialog js so that wehn you change on dialog level at that time only dropdown value get changed (at the same time )---> Js will help you on that...


But if you want to pass the value in servlet , it can be done like below mentioned code snippet . but this would not be "on the fly" ..Suppose value is 5 .after dialog submission only your dropdown items count  would be 5   ..when you made it suppose 6 then submit dialog again and open it again then only 6 items you will be able to see ..In backedn it will work like that 


as you registered servlet with path ...just read the  dailog values of your field "Number of Articles to Show " in your servlet 

smething like this you can do 


then you can use this value and put the logic to just those many dropdown selection items .


String cmptOnPage = req.getPathInfo().toString();
String actualPath = cmptOnPage.substring(cmptOnPage.lastIndexOf("/content"), cmptOnPage.length());
ValueMap actualResourceValueMap = req.getResourceResolver().getResource(actualPath).adaptTo(ValueMap.class);
String dialogVlaues =actualResourceValueMap.get("text", String.class);

logger.info("dialogVlaues path "+dialogVlaues);

/** ------------------------------------------------------------