0

gsp中,我将参数传递给taglib,如下所示:

        <g:oneColumnSelect fieldName="gender" from="${['F', 'M']}"
                           valueMessagePrefix="applicant.gender"
                           value="${command?.gender}" noSelection="${['':'No answer...']}" />

taglib中,我将参数分配给模型,然后将其传递给 gsp 模板,如下所示:

class FormsTagLib {

def oneColumnSelect = {attrs, body ->
    out << render(template:"/common/wizard/formselect",
            model:[
                    fieldName:attrs.fieldName,
                    from:attrs.from,
                    valueMessagePrefix:attrs.valueMessagePrefix,
                    optionValue:attrs.optionValue,
                    value:attrs.value,
                    noSelection:attrs.noSelection
            ])
}

我有许多这样的标记库,其中来自 gsp 的属性被复制到标记库中的模型以在模板中呈现。似乎应该有一种更简单的方法将 attr 字段复制到模型中,而不是一个一个地分配每个变量。

类似'使用现有地图键作为键名从现有地图创建新地图,然后将原始地图值分配给新地图'。

有任何想法吗?仅将 attrs 传递给模板是行不通的。

4

2 回答 2

1

只是打电话

 render(template:"/common/wizard/formselect", model:attrs)

应该这样做!玩得开心!

于 2013-08-31T00:08:36.340 回答
0

也许Map.putAll()可以帮助你:

def first = [a: 1, b: 2]
def second = [c:3]
second.putAll(first)
println second // prints [c:3, a:1, b:2]
于 2013-08-29T14:31:39.757 回答