Grails控制器填充菜单,带有单独的主控制器视图

时间:2015-04-07 20:35:08

标签: grails gsp grails-controller

我正在尝试创建一个会员目录。我已经填写了目录并准备好了。我正在使用main.gsp布局并为其创建了模板。

侧面导航栏需要由成员所属的委员会和委员会填充。我通过一个单独的域和控制器创建了它。它创建的视图通过委员会.id将搜索参数传递给成员页面,以对成员列表进行排序。

我试图在整个网站布局中使用委员会控制填充那个侧面导航栏,但是当我测试网站模板部分没有填充时。当我选择委员会控制器页面来测试我的输出时,它就会填充。我相信我错过了对控制器的调用或一些引用,使得该视图在整个站点中都处于活动状态,而不仅仅是在控制器页面上。

我正在使用Grails v.2.3.3

以下是main.gsp中侧面导航栏的代码。

<div id="leftNav" >
    <g:render template="/common/left_nav" model="[hospital:Hospital]" />
</div>

这是在&#34; _left_nav.gsp&#34;中调用导航模板的地方。

<div>
    <g:render template="/hospital/committee" model="[hospital:Hospital]" />
</div>

以下是在&#34; _committee.gsp&#34;中再次调用导航模板的位置。

<%@ page import="trustees.Hospital" %>

<div id="hospcomm" class="content scaffold-list" role="navigation">
    <table>
        <g:each in="${hospitalInstanceList}" status="i" var="hospitalInstance">
        <tr>
            <td>
            <g:link controller="hospital" action="show" id="${hospitalInstance.id}">${fieldValue(bean: hospitalInstance, field: "hospitalName")}</g:link>

<%--            <g:link action="show" id="${hospitalInstance.id}">--%>
<%--                <a href="index.jsp?nav=main&hosp=<%=hospGiven %>" target="_top">--%>
<%--                    <img src="/Trustees/static/images/img/navigate.msh_board.gif" border="0">--%>
<%--                </a>--%>
<%--            </g:link>    --%>
            </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <g:each in="${hospitalInstance.committees}">
                    <li>
                        <g:link controller="hospital" action="show" id="${it.id}">  ${it.committeeName} </g:link>
                    </li>
                    </g:each>
                </ul>
            </td>
        </tr>
        </g:each>
    </table>
</div>

正在动态调用此视图的控制器。

1 个答案:

答案 0 :(得分:0)

是。只有在您访问特定控制器的操作时,才会填充侧面导航栏。您有2个选项,在每个控制器的操作中计算此值,该操作将使用侧面导航栏的视图或使用过滤器

如果您希望在每个页面上显示此信息,我建议您尝试使用过滤器来访问此信息。每次加载页面时,您都可以检索 医院

如果您使用安全插件,例如Shiro或SpringSecurity作为应用程序的一部分,您可以将此位放在那里。