gpt4 book ai didi

grails - 在grails中获取动态bean字段

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

我创建了一个taglib以缩短输入字段代码。它预设“名称”,“值”及其他。现在,我需要获取一个bean值,但是保存该值的字段是动态的。
查看一些代码(简称为更好地解决我的问题):

gsp:

<g:validatedInputField bean="${command}" field="surname" />
<g:validatedInputField bean="${command}" field="name" />

标签库
def validatedInputField = { attrs, body ->

def field = attrs.field
def bean = attrs.bean

if (field && bean) {

def val = bean.field
out << "<input type=\"text\" name=\"$field\" bean=\"$bean\" value=\"$val\">"
}
}

因此,问题是以下几行。它显然不起作用,因为bean中没有字段“field”。我希望它被“名称”或“姓氏”或参数“字段”的任何值动态替换。
def val = bean.field

我尝试了各种GString /插值变体的实验,但没有任何效果。
当然,我可以只添加另一个参数来传递值,但是我觉得它不是必需的,因为我已经拥有在taglib中获取它所需的一切...

你能给我一些指示吗?
谢谢

最佳答案

在groovy中,可以使用GStrings动态引用对象的成员。例如:

def val = bean."${field}"

您甚至可以在GString中执行一些逻辑。假设您有一个默认字段,并且仅在'field'变量不为null的情况下才想使用该名称:
def val = bean."${field ? field : "default"}

关于grails - 在grails中获取动态bean字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661472/

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