2010-02-12 20 views
1

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.

Répondre

4

J'ai ce même problème et ce serait très agréable de le faire fonctionner.

MISE À JOUR

J'ai ajouté method="post" à la forme et cela a fonctionné comme un charme :)

+0

trouvaille fantastique, merci! –