gpt4 book ai didi

grails - 从 map 的特定值的下拉列表中设置值

转载 作者:行者123 更新时间:2023-12-02 15:36:30 24 4
gpt4 key购买 nike

我在 Controller 中创建了一个 map 并将其传递给 View。我有一个下拉列表,用于填充数据库中的值。值是“1”、“2”、“3”。我想从下拉列表中选择 map 的值(value)
就像第一个下拉列表一样,所选值将是 Map 的第一个元素,对于下一个下拉列表,所选值将是 Map 的第二个值,依此类推,我想这可以从选择选项卡的 value 属性中完成,但是怎么样?任何帮助表示赞赏

例如

我在 Controller 中创建了一个 map 并将其传递给查看

def Population={

def scores=["1":2,"2":3,"3":2,"4":2,"5":3,"6":1]

return new ModelAndView("/scores/scoreCheck",scores)

}

在 View 中我正在使用它,如下所示
<td><g:select name="SCBFScore" id="SCBFScore" from="${Decode.findAllByAttributeShortName('HASCORE1').collect{it.attributeCodeText}}" 
value="${scores?.get('1')}" noSelection="${['':'Select...']}"
</td>

我的要求是选择带有 map 分数键“1”的下拉列表。
这里是查询
 Decode.findAllByAttributeShortName('HASCORE1').collect{it.attributeCodeText}

返回 ["1","2","3"]

谢谢回复

我有一个玩家过去 6 年的跑分的功能。我有一个模块,玩家可以看到或更新他的分数,但不能创建一个全新的分数。他的所有分数的数据应该从另一个来源加载。当应用程序加载时,它将加载他的最新分数。他有三个级别的分数“1”,“2”,“3”,所以他只能得分一个三。我想在应用程序最初加载最后一个分数的数据时在 View 中预设分数的值。

例如
在 Controller 中,我提取了所有 6 年的分数并存储在 map 中,因此 map 的分数格式为

['2012 年得分':'2',[2011 年得分:'3'],[2011 年得分]:'1',[2010 年得分]:'2'] 等

所以假设在 2012 年,玩家得分为 2
因此,当 View 加载时,它将为 2012 年预设组合框为 2,组合框的值为 1、2、3

所以对于 2011 年
View 将 2011 年的下拉列表预设为 3,组合框的值为 1.2,3

我是这样想的,请建议是否有更好的方法来做到这一点,或者您需要更多细节

最佳答案

g:select 的 value 属性有不同的用途。如果要从域对象列表中填充 g:select,则可以指定域类属性,该属性用于存储值 - 或预设,如果它已经包含一些值。

简单的例子。您有一个域菜单和内容,t 并且在菜单中您要分配默认内容(我的代码中的片段,'menuInstance' 是实际的域对象,我正在使用):

<g:select name="defaultContent.id"
from="${my.package.Content.list()}"
optionKey="id"
value="${menuInstance?.defaultContent?.id}" />

我理解您的目标:您想将包含每个列表框的多个值列表的 map 传递给 View ,对吗?所以你应该像这样在 Controller 中创建 map :
return [ 'listbox1': list1, 'listbox2':list2 ]

在 View 中,您只需将“listbox1”用于 g:select 的 from 属性。

因此,经过您的进一步解释,我宁愿使用一些 DTO 来解决问题。在您的 src/groovy(或 src/java)下创建一个 DTO:
public class ScoreDTO {
String season
int score

public String toString() { return "Season $season: $score" }
}

在您的 Controller 中,它应该如下所示:
ScoreDTO score1 = new ScoreDTO( season:'2012', score:3 )
ScoreDTO score2 = new ScoreDTO( season:'2011', score:1 )
ScoreDTO score3 = new ScoreDTO( season:'2010', score:2 )

def seasons = [ score1, score2, score3 ]

return [ 'seasons':seasons ]

在您看来,您可以使用它:
<g:select name="score" from="${ seasons }" />

现在离你的目标更近了吗?

关于grails - 从 map 的特定值的下拉列表中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com