在 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
])
}
我有很多这些taglib,其中来自gsp的attrs被复制到标记lib中的模型以在模板中呈现。似乎应该有一种更简单的方法将attr字段复制到模型中,而不是逐个分配每个变量。
类似'使用现有地图键作为键名从现有地图创建新地图,然后将原始地图值指定给新地图'。
有什么想法吗?只是将attrs传递给模板不起作用。
答案 0 :(得分:1)
只需致电
render(template:"/common/wizard/formselect", model:attrs)
应该这样做!玩得开心!
答案 1 :(得分: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]