0

Grails の独自のインスタンスと共に、異なるコントローラー ビューで 1 つのインスタンスにアクセスしますか? 私のシナリオ:

すべてのステータスを一覧表示する _list.gsp テンプレートを使用したステータス コントローラ。ユーザー インスタンスには、政治的プロファイルと教育プロファイルがあります。政治の list.gsp または教育の show.gsp に _list.gsp をレンダリングしたい 私のステータスの _list.gsp は次のようになります。

<g:each in="${statusInstanceList}" status="i" var="statusInstance">
<td>${fieldValue(bean: statusInstance, field: "statusMessage")}</td>

そして、このような政治プロファイルで _list.gsp テンプレートをレンダリングしたい

<g:each in="${politicItemList.sort{it.dateCreated}}" status="i" var="politicItemInstance">
                <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
                  <td>${fieldValue(bean: politicItemInstance, field: "politicItemName.name")}
    <g:render template="/status/list"/>

残りは正常に動作していますが、値をロードしていません。クラスまたはインスタンスをグローバルに、またはアプリケーションのすべての領域で使用できるようにする方法がわかりません。

4

1 に答える 1

1

明らかに、テンプレート _list.gsp は、statusInstanceListテンプレートをレンダリングするアクションに関連するモデルから取得する必要があるものを使用します。この場合、Statusコントローラからのアクション。

このテンプレートを政治的プロファイルでレンダリングしようとしています。_list.gspテンプレートをレンダリングするには、テンプレートにstatusInstanceList. 右?どうやってそれができる?

テンプレートをレンダリングする前remoteFunctionに、ステータス コントローラを呼び出してステータス リストを取得するか、ステータス リストを政治プロファイル モデルに追加して _list テンプレートに渡す必要があります。

たとえば、次のようにプログラムします。

Status Controller:-

def statusAction(){
   render(template: "list", model: [statusInstanceList: statusInstanceList])
}

Profile controller:=

def profileAction(){
   //Get the statusInstanceList here to set in the model somethinglike
   def actionResponse = g.include(action: 'statusAction', controller: 'status')
   def statusInstanceList = actionResponse.statusInstanceList
   render(template: "profilelist", model: [politicItemList: politicItemList, statusInstanceList: statusInstanceList])
}

You can do something like:

_profileList.gsp

<g:each in="${politicItemList.sort{it.dateCreated}}" status="i" var="politicItemInstance">
                <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
                  <td>${fieldValue(bean: politicItemInstance, field: "politicItemName.name")}
    <g:render template="/status/list" model="[statusInstanceList: statusInstanceList]"/>

プロファイル コントローラーでステータス アクションの応答を取得したくない場合はg:include、profileList テンプレートに次のように追加できます。

<g:include controller="status" action="statusAction" />

これには、ステータス アクションから profileList テンプレートへの応答が含まれます。見る詳細については。

于 2013-05-23T03:05:46.127 に答える