カスタム taglib があります。taglib の結果を g:render taglib に渡します。パラメータの 1 つは Asset オブジェクトです。taglib を単独で呼び出すと、正常に動作します。パラメータは実際にはアセット オブジェクトです。
例:
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 クラスへのクラス 'org.codehaus.groovy.runtime.GStringImpl' のクラス キャスト エラーが発生します。
これが最初の例では Object としてレンダリングされているのに、2 番目の例では Gstring としてレンダリングされている理由について、私は混乱しています。
助けてくれてありがとう。