我有一个自定义taglib。我将把taglib的结果传递给g:render taglib。其中一个参数是Asset对象。如果我自己调用taglib它可以正常工作。该参数实际上是一个资产对象。
示例:
templateFinder template="_displayMain" findByFactory="asset" findByObject="${params.asset}"
正确地将params.asset呈现为templateFinder标记库中的资产。
然而,一旦我将它添加到g:render taglib,它就变成了Asset对象的toString表示。
示例:
render template="${g.templateFinder(template:'_displayMain', findByFactory:'asset', findByObject:"${params.asset}")}" ..../>
这导致Class Cast错误,类'org.codehaus.groovy.runtime.GStringImpl'到我的Asset类。
我很困惑为什么这会在第一个例子中呈现为对象而在第二个示例中呈现为Gstring。
感谢您的帮助。
答案 0 :(得分:2)
您将资产转换为字符串,方法是将其封装在"${...}"
中。试试这个:
<g:render template="${g.templateFinder(template:'_displayMain',
findByFactory:'asset', findByObject: params.asset)}" ..../>