在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 传递给模板是行不通的。