Question

I have a map with key-value pairs. I want to display the key on a drop-down and value to be sent to server for identifying what is selected.

I am using Struts2. I tried putting the Map in <s:select> tags list, however it shows the values in the dropdown.

Was it helpful?

Solution

Use listKey and listValue attributes of <s:select> tag to get properties from list of objects.

In order to swap keys and values in map put value in listKey and key in listValue.

<s:select list="someMap" listKey="value" listValue="key"/>

OTHER TIPS

As far as you know the dropdown in Struts 2 can be used with List or any other collection like Map. It uses OGNL to retrieve the values for the options text and values.

The difference from the List is that the Map is converted via entrySet() and iterated to get Map.Entry element for the select option.

This object you can use to map a key and value for your dropdown. It has getKey() and getValue() methods that is useful to OGNL to populate a dropdown. The first is used to populate a value attribute, which is submitted to the action if it's selected, and a second fills an option's text.

If your dropdown shows values, then you map them wrong. The values should be mapped as a keys of the Map, and display texts as values.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top