【问题标题】:Switching views with Grails Portlet Plugin使用 Grails Portlet 插件切换视图
【发布时间】:2012-06-21 21:49:32
【问题描述】:

我一直在尝试将 Grails Portlet 插件与 Liferay 一起使用,但无论教程怎么说,我似乎都无法呈现不同的页面:

查看映射

对于那些支持它的请求类型('resource'、'render'),可以通过让 portlet 操作闭包返回一个映射来返回一个模型。模型将使用以下规则(按先例顺序)传递给视图:

  1. “XXX/xyz.gsp”,其中“XXX”是 portlet 的名称(例如 XXXPortlet.groovy),“xyz”是请求中“action”参数的值。

  2. 'XXX/MODE.gsp'其中'XXX'是portlet的名称(例如XXXPortlet.groovy),'MODE'是当前的portlet模式(例如'view')

  3. 'XXX/render.gsp'

到目前为止,我已经能够通过此代码触发特定操作:

<form method="post" action="${portletResponse.createActionURL()}">
    <input type="hidden" name="action" value="testPage"/>
    <input type="submit" value="action">
</form>

这将触发一个代码块:

 def testPage = {
    println "TESTPAGE METHOD"
 }

但是之后它总是会渲染 View.gsp,不像它所说的 XXX/testPage.gsp 会起作用。

此外,我尝试使用 createRenderURL() 而不是 createActionURL(),但是 portlet 将呈现一个空白页面,我似乎无法在日志中找到它试图查找的页面。

任何关于此的帮助都会很棒,谢谢!

【问题讨论】:

    标签: grails liferay portlet


    【解决方案1】:

    最终通过深入研究 groovy 插件解决了这个问题,并希望记录下其他有问题的人的答案。您必须使用 portletResponse.createRenderURL() 作为操作,此外,您必须从调用的方法返回一个映射。

    这是一个例子:

    <form method="post" action="${portletResponse.createRenderURL()}">
        <input type="hidden" name="action" value="testPage"/>
        <input type="submit" value="submit">
    </form>
    

    将调用以下代码并将其呈现到 XXX/testPage.gsp 视图

    def testPage = {
        println "TESTPAGE METHOD"
        ['PageProperty1':'foo', 'PageProperty2':'bar']
    }
    

    这里要注意的重要一点是 createRenderURL() 将简单地调用由 action 参数的值指定的闭包,如果存在则重定向到该页面,因为 createActionURL() 将简单地调用闭包并重定向查看.gsp。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多