Pregunta

Estoy tratando de crear un portlet simple para Liferay 5.2.2 usando Grails 1.2.1 con los Grails-portlets 0,7 y Grails-portlets de Liferay 0.2 plugins.

He creado y desplegado una acción de portlets (título acaba de actualizar, descripción, etc ...). Se despliega correctamente y la vista se representa correctamente. Sin embargo, cuando envíe el formulario predeterminado que está en view.gsp nunca golpea la función actionView.

Estos son los bits de código relevantes:

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>

El gato impresiones terminales In render view cada vez que veo el portlet, y después de presionar el Enviar botón. Nunca se imprime la declaración In action view.

¿Alguna idea?

Actualizar

activado el registro y esto es lo que veo cada vez que hago clic en el Enviar en el portlet:

[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

La cuarta línea en ese fragmento de registro dice Bound render petición ... , que no entiendo porque la acción en el formulario que se encuentra en el portlet es la url de acción. Yo he pensado que debe ser una solicitud de acción.

¿Fue útil?

Solución

Tengo este mismo problema y sería muy agradable para que funcione.

Actualizar

He añadido method="post" a la forma y funcionó como un encanto:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top