2

我有一个自定义标签库。我将把 taglib 的结果传递给 g:render taglib。其中一个参数是 Asset 对象。如果我自己调用标签库,它工作正常。该参数实际上是一个资产对象。

例子:

templateFinder template="_displayMain" findByFactory="asset" findByObject="${params.asset}"

正确地将 params.asset 呈现为 templateFinder taglib 中的资产。

但是,一旦我将它添加到 g:render taglib 中,它就会变成 Asset 对象的 toString 表示。

例子:

 render template="${g.templateFinder(template:'_displayMain', findByFactory:'asset', findByObject:"${params.asset}")}" ..../>

这会导致我的 Asset 类出现 Class Cast 错误,其中包含 class 'org.codehaus.groovy.runtime.GStringImpl'。

我很困惑为什么这在第一个示例中呈现为对象,而在第二个示例中呈现为 Gstring。

谢谢你的帮助。

4

1 回答 1

2

您通过将资产包含在"${...}". 试试这个:

<g:render template="${g.templateFinder(template:'_displayMain', 
    findByFactory:'asset', findByObject: params.asset)}" ..../>
于 2012-11-29T21:48:43.267 回答