0

次のような ag:select ステートメントがあります。

<g:select id="gearbox" name="gearbox.id" from="${com.nppc.mes.energyusage.Gearbox.list()}" optionKey="id" optionValue="${ {"${it.gearboxType} - (${it.gearboxRatio})"} }" required="" value="${gearboxVoltageInstance?.gearbox?.id}" class="many-to-one"/>

optionValue 属性を追加しました。optionValue="${ {"${it.gearboxType} - (${it.gearboxRatio})"} }"

これは私が望むように機能します。

ただし、ドメイン オブジェクトである Gearboxes をどこでも同じように表示したいと考えています。テンプレートを作成し、show.gsp で g:render タグを使用できるようになりました。

私が理解できないのは、このようなものを機能させる方法です:

optionValue="<g:render template="/shared/gearbox" model:="[gearbox:it]"/>"

テンプレートを使用して、optionValue に入るコンテンツを生成することはできますか?

4

2 に答える 2

0

あなたはそれをハックすることができますが、私には悪いデザインのように感じます.

次のようなことを行う正しい方法は、Gearbox ドメイン クラスにヘルパー メソッドを追加することです。

static transients = [ 'renderedValue' ]

def getRenderedValue(){
   "$gearboxType - $gearboxRatio"
}

次に、optionValue="${ it.renderedValue }" を呼び出すだけです。

また、ドメイン クラスで toString() を指定すると、これを使用してデフォルトのレンダリング値が生成されます。

于 2012-07-28T00:47:07.287 に答える
0

タグは、Groovy コードで通常の関数として使用できます。お気に入り:

optionValue="${g.render(template: '/shared/gearbox', model: [gearbox: it])}"
于 2012-07-30T14:46:17.630 に答える