J'essaie de créer un portlet simple pour Liferay 5.2.2 en utilisant Grails 1.2.1 avec les plugins grails-portlets 0.7 et grails-portlets-liferay 0.2.Grails Liferay portlet n'invoquant pas l'action
J'ai créé et déployé un portlet de stock (juste titre, description, etc ...). Il se déploie correctement et la vue s'affiche correctement. Toutefois, lorsque je soumets le formulaire par défaut qui est dans view.gsp
il n'atteint jamais la fonction actionView
.
Voici les bits de code correspondant:
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>
Le terminal imprime tomcat In render view
chaque fois que je vois le portlet, et après je presse le soumettre bouton. Il n'imprime jamais l'instruction In action view
.
Des idées?
Mise à jour
Je me suis retourné sur l'exploitation forestière et ce que je vois chaque fois que je clique sur le bouton d'envoi dans le 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: [email protected]
portlets.GrailsDispatcherPortlet - Testing handler map [[email protected]] in DispatcherPortlet with name 'Search'
portlets.GrailsDispatcherPortlet - Testing handler adapter [[email protected]]
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: [email protected]
portlets.GrailsDispatcherPortlet - Successfully completed request
La quatrième ligne dans cet extrait de journal dit Bound demande de rendu ..., que je ne comprends pas parce que l'action dans le formulaire qui est dans le portlet est à l'action url. J'aurais pensé que cela devrait être une demande d'action.
trouvaille fantastique, merci! –