Grails Liferay portlet没有调用动作

时间:2010-02-12 18:23:10

标签: grails portlet liferay grails-plugin

我正在尝试使用Grails 1.2.1和Grails-portlets 0.7以及grails-portlets-liferay 0.2插件为Liferay 5.2.2创建一个简单的portlet。

我创建并部署了一个库存portlet(只是更新了标题,描述等......)。它正确部署并且视图呈现正确。但是,当我提交view.gsp中的默认表单时,它永远不会访问actionView函数。

以下是相关的代码位:

SearchPortlet.groovy

class SearchPortlet {

  def title = 'Search'
  def description = '''
A simple search portlet.
'''
  def displayName = 'Search'
  def supports = ['text/html':['view', 'edit', 'help']]

  // Liferay server specific configurations
  def liferay_display_category = 'Category'

  def actionView = {
    println "In action view"
  }

  def renderView = {
    println "In render view"
    //TODO Define render phase. Return the map of the variables bound to the view
    ['mykey':'myvalue']
  }

  ...
}

view.gsp

<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<div>
<h1>View Page</h1>
The map returned by renderView is passed in. Value of mykey: ${mykey}
<form action="${portletResponse.createActionURL()}">
    <input type="submit" value="Submit"/>
</form>
</div>

每当我查看portlet时,tomcat终端都会打印In render view,然后按 submit 按钮。它从不打印In action view语句。

有什么想法吗?

更新

我启用了日志记录,这是我在portlet中单击 submit 按钮时看到的内容:

[localhost].[/gportlet]  - servletPath=/Search, pathInfo=/invoke, queryString=null, name=null
[localhost].[/gportlet]  -  Path Based Include
portlets.GrailsDispatcherPortlet  - DispatcherPortlet with name 'Search' received render request
portlets.GrailsDispatcherPortlet  - Bound render request context to thread: com.liferay.portlet.RenderRequestImpl@7a158e
portlets.GrailsDispatcherPortlet  - Testing handler map [org.codehaus.grails.portlets.GrailsPortletHandlerMapping@1f06283] in DispatcherPortlet with name 'Search'
portlets.GrailsDispatcherPortlet  - Testing handler adapter [org.codehaus.grails.portlets.GrailsPortletHandlerAdapter@74f72b]
portlets.GrailsPortletHandlerAdapter  - portlet.handleMinimised not set, proceeding with normal render
portlet.SearchPortlet  - In render view
portlets.GrailsPortletHandlerAdapter  - Couldn't resolve action view /search/null.gsp
portlets.GrailsPortletHandlerAdapter  - Trying to render mode view /search/view.gsp
portlets.GrailsDispatcherPortlet  - Setting portlet response content type to view-determined type [text/html;charset=ISO-8859-1]
[localhost].[/gportlet]  - servletPath=/WEB-INF/servlet/view, pathInfo=null, queryString=null, name=null
[localhost].[/gportlet]  -  Path Based Include
portlets.GrailsDispatcherPortlet  - Cleared thread-bound render request context: com.liferay.portlet.RenderRequestImpl@7a158e
portlets.GrailsDispatcherPortlet  - Successfully completed request

该日志片段中的第四行显示绑定呈现请求... ,我不明白,因为portlet中的表单中的操作是针对操作URL。我认为这应该是一个行动要求。

1 个答案:

答案 0 :(得分:4)

我有同样的问题,让它发挥作用会非常好。

<强>更新

我在表单中添加了method="post",它就像魅力一样:)