gpt4 book ai didi

grails - 使用GSP表达式内的变量引用Groovy Map

转载 作者:行者123 更新时间:2023-12-02 15:38:39 25 4
gpt4 key购买 nike

我正在尝试减少Grails应用程序中的一些重复的GSP代码。以下代码按预期工作:

<g:textField name="recordValues.0.name" value="${recordValues?.get(0)?.name}"/>
<g:textField name="recordValues.0.age" value="${recordValues?.get(0)?.age}"/>

正如我最初所说的, recordValues.0.age实际上是Map而不是类属性。

但是,当我尝试通过列表枚举来动态设置一堆时,不会评估value属性:
<g:each in="${fields}" var="prop">
<g:textField name="recordValues.0.${prop}" value="${recordValues?.get(0)?.prop}"/>
</g:each>

似乎value属性正在寻找名为“prop”的属性Map键,而不是将其评估为变量。我试过了 recordValues?.get(0)[prop],并且之间有 ?,但没有进行编译。

有没有一些我可以用变量作为参数调用的动态方法,甚至更简单的解决方案?

最佳答案

最后我自己对它进行了排序。感谢代码空间,让我再次检查代码并注意到它是我尝试引用的Map,而不是对象属性。我使用枚举的事实混淆了该问题,因为使用常规的map.get(var)不起作用,我需要使用map.get(var.name())(也许我将其编码为枚举内的String字段,以避免这种情况)。

解决方法如下:

<g:each in="${fields}" var="prop">
<g:textField name="recordValues.0.${prop}" value="${recordValues?.get(0)?.get(prop.name())}"/>
</g:each>

关于grails - 使用GSP表达式内的变量引用Groovy Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5838158/

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