获取arrayList中的映射值

时间:2015-08-13 09:51:44

标签: groovy gsp

我有一个我在控制器中生成的地图数组列表并传递给GSP页面!

我想将地图的值作为列表呈现在g:select in gsp!

在arrayList中的每个元素(Map)中! select选项值应为map值,map键为optionKey 因为我想在用户选择选项时在脚本中使用此键!

如果问题不太清楚,抱歉有点困惑!

 ArrayList[Map1,Map2,Map3]
    Map1[1,value1]
    Map2[2,value2]
    Map3[3,value3]
    // the values are strings to show in select
   //the respective key of the option value the user has chosen i want it as option key so i can pass it to script

1 个答案:

答案 0 :(得分:0)

如果我理解正确你有一个地图列表(ArrayList)并且你想将每个地图表示为选择,对吧?

你的地图广告可能是这样的:

def words_en = ['One':'Apple', 'Two':'Pear', 'Three': 'Strawberry']
def words_it = ['One':'Mela', 'Two':'Pera', 'Three': 'Fragola']
def words_de = ['One':'Apfel', 'Two':'Birne', 'Three': 'Erdbeere']

def myList = [words_en, words_it, words_de]

您可以按如下方式生成选择元素:

<g:each var="myMap" in="${myList}" status="i">
    <g:select id="select_${i}" name="select_${i}" optionKey="key" from="${myMap}" optionValue="value" ></g:select> <br/>
</g:each>

编辑: 使用您的问题的编辑版本,我知道您有几个地图,每个地图只包含一个键值对。鉴于您的密钥是唯一的,最好的方法是将所有地图合并为一个,只需使用它来填充选择:

def words_1 = ['One':'Apple']
def words_2 = ['Two':'Pera']
def words_3 = ['Three': 'Erdbeere']

def myList = [words_1, words_2, words_3]

def myMap = [:]
myList1.each{map->
    myMap.putAll(map)
}

并在视图中:

<g:select id="mySelect" name="mySelect" optionKey="key" from="${myMap}" optionValue="value" ></g:select>