如何获取包含的控制器动作的参数以在调用者父视图中使用它们

时间:2013-06-25 16:22:18

标签: jquery grails

如果列表为空,我想隐藏div。原因是DRY而不是两次调用数据库。

这将是控制器代码,其中创建了变量testInstanceTotal

class TestController {
    def user = getAuthenticatedUser()
    def userStuff = Alojamiento.findAllByUser(user)     
    [testInstanceList: userStuff, testInstanceTotal: userStuff.size()]
}

这将是调用者父视图的代码:

<div id="divShowOrHide">                                        
    <g:include controller="test" action="list" />

    <g:if test="${testInstanceTotal == 0}">
        $('#divShowOrHide').hide();                 
    </g:if>                             
</div>  

检查它发生了什么。我添加了下一个代码:

<%=testInstanceTotal %>
<%=params %>

这在浏览器中显示(注意:调用者父视图是index.gsp):

 [id:null] 

因此调用者父视图中没有包含控制器操作的参数。我怎么能得到它们?

1 个答案:

答案 0 :(得分:0)

我认为不是在index.gsp上编写java脚本代码,而应该在列表GSP页面上编写js代码,因为它会有响应变量。

当你使用包含列表时,你可能有一个列表页面,它会在那个地方呈现,如果你添加你的JS代码,这将隐藏父div然后它将起作用。

例如在index.gsp:

    <div id="divShowOrHide">                                        
    <g:include controller="test" action="list" />

</div>

并在list.gsp上,(将呈现控制器操作的页面):

<script>
<g:if test="${testInstanceTotal == 0}">
        $('#divShowOrHide').hide();                 
    </g:if>                             
</script>

然后您将不需要在请求页面上访问响应,并且您的div将被隐藏。 希望这会有所帮助。