Griales Liferay portlet no invocar la acción
-
20-09-2019 - |
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.
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:)