2016-11-24 15 views
1

シナリオ:トランジエントフィールドを含むオーダーショービュー、総費用。推移的フィールドは、デフォルトのフィールド生成ビューではレンダリングされないため、表示するフィールドを手動で指定する必要がありました。以下の罰金に動作します:Grailsのフィールドプラグイン - カスタムコレクションの表示メンバーをリンクとして表示

<f:with bean="customerOrder"> <f:display property='token' wrapper="displayText"/> <f:display property='lineItems' wrapper="displayCollection"/> <f:display property='total' wrapper="displayMoney"/> <f:display property='dateCreated' wrapper="displayDate"/> <f:display property='customer' wrapper="displayLink"/> </f:with>

displayCollection部分がそれはこのようになります/ビュー/ _fields/displayCollection内_displayWrapper.gspファイルによって処理されます。

<li class="fieldcontain" style="list-style-type: none;"> <span class="property-label">${label}</span> <span class="property-value" aria-labelledby="${property}-label"> <ul> <g:each in="${value}" var="item"> <li>${item?.toString()}</li> </g:each> </ul> </span> </li>

これは一般的なものでコレクション表示フィールド。それは、カート内の記事、ユーザーによる投稿などで機能します。唯一のことは、コレクションメンバーがテキストではなくリンクとして表示されることです。

$ {value}が1つのクラスメンバーであり、コレクションではない場合、以下の_displayWrapper.gspはうまく動作します。

<li class="fieldcontain" style="list-style-type: none;"> <span class="property-label">${label}</span> <span class="property-value" aria-labelledby="${property}-label"> <g:link action="show" controller="${property}" id="${value?.id}">${value?.toString()}</g:link> </span> </li>

質問は、私はコレクションのメンバーからコントローラ名を導き出すことができますどのように、コレクションは$ {値}によって得られていますか?

ビューテンプレートをインストールしましたが、そこには運がありません。同様に、私はフィールドのプラグインコードを見ましたが、そこにも運はありません。

アイデア?

答えて

1

10分後に私はそれをしました。このソリューションの本質は、Grailsのコントローラ名が対応するGrailsドメインクラスから導かれるという事実にあります。ここでは、関連する_displayWrapperがどのように見えるかです:

<li class="fieldcontain" style="list-style-type: none;"> <span class="property-label">${label}</span> <span class="property-value" aria-labelledby="${property}-label"> <ul> <g:each in="${value}" var="item"> <li> <g:link controller="${item.class.getSimpleName()[0].toLowerCase() + item.class.getSimpleName().substring(1)}" action="show" id="${item.id}"> ${item?.toString()} </g:link> </li> </g:each> </ul> </span> </li>

一つでもこれを行うには、カスタムタグを書くことができます。

関連する問題