在Grails中访问不同控制器视图中的一个实例以及它自己的实例?

时间:2013-05-23 01:33:15

标签: grails views

在Grails中访问不同控制器视图中的一个实例及其自己的实例? 我的情景:

  

带有_list.gsp模板的状态控制器,列出了所有状态。   用户实例具有政治概况和教育概况。   我想将_list.gsp渲染到政治的list.gsp或education的show.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"/>
  

休息工作正常,但没有加载值   我不确定如何在全局或应用程序的所有区域中提供类或实例。

1 个答案:

答案 0 :(得分: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]"/>

如果您不想在Profile Controller中获取状态操作的响应,则可以在profileList模板中添加g:include

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

这将包括状态操作对profileList模板的响应。有关详细信息,请参阅