Bom, não é muito diferente. A API do s:select, no atributo list diz:
Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option ‘value’ parameter and the Map value will become the option body..
Um exemplo, onde a lista é na verdade um Map<Idioma, String>, Idioma é um enum. Cada option do select terá como id a key do mapa e como valor/label o value do mapa.
<s:select labelposition="bottom" label="%{getText('commons.idioma')}" id="idioma" name="idioma" list="idiomas" listKey="key" listValue="value" headerKey="" headerValue="%{getText('commons.selecione')}" />
Era isso que queria saber?