在GSP中打印Groovy/Grails代码时,评估变量中的Groovy/Grails代码



我有一个GSP页面,其中包含与特定上下文相关的不同输入元素。例如,我可以显示用例a的文本字段,但不能显示用例B的文本字段(短版本,实际上非常复杂)

为此,我有一个域对象,它通常用纯静态HTML填充。但现在我需要添加动态数据,比如:

def field = new InputField()
field.code = '<input type="text" name="foo" value="${currentUser.name}" />'
// or: field.code = '<option value="1"><g:message code="someCode"/></option>'

此代码存储在数据库中。稍后将在GSP:中呈现

<g:each in="${InputField.findAllBySomeCondition(...)}">
    ${it.code}
</g:each> 

这将打印输入元素,但不是评估动态代码(${currentUser.name}),而是将其打印为纯文本。

不幸的是,我无法更改整个过程,已经存储了3000多个不同的输入元素,但它们都不是动态的。

有没有一种方法可以告诉Grails在打印变量之前评估变量中的代码?

edit:我使用的是Grails 2.2.4

这是因为你对字符串使用的是',而不是"。当使用'时,结果是一个字符串,而不是具有变量求值的GString。

尝试更改为:

field.code = "<input type="text" name="foo" value="${currentUser.name}" />"

或者使用三重版本"来避免转义:

field.code = """<input type="text" name="foo" value="${currentUser.name}" />"""

相关内容

  • 没有找到相关文章

最新更新