2

カスタム 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 としてレンダリングされている理由について、私は混乱しています。

助けてくれてありがとう。

4

1 に答える 1

2

で囲むことにより、アセットを文字列に変換しています"${...}"。これを試して:

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