2010-07-22 4 views
5

Je suis nouveau sur Grails (mais pas sur Groovy ou le développement web). J'essaie d'écrire une application Web qui accepte les demandes REST. Le problème que j'ai est qu'en dépit de suivre - autant que je peux dire - la documentation, je reçois toujours 404s en frappant ce que je crois est l'URL correcte.Les mappages d'URL REST ne fonctionnent pas (Grails 1.3.3, Tomcat6)

Les détails sont les suivants.

Le projet est flambant neuf (en utilisant Grails et IntelliJ IDEA 1.3.3 9.0.3 qui supporte 1.3.3)

Un contrôleur de test très simple:

package com.myproject 

class TestController { 

    def index = { } 

    def list = { 
    System.out.println("params = " + params); 
    } 

    def save = { 
    System.out.println("params = " + params); 
    } 

} 

et la mise en correspondance également URL , tentant de mapper toutes les requêtes GET à la méthode list() du contrôleur. Selon le document et le livre Grails in Action, le nom du contrôleur "test" dans le mappage sera mappé à TestController.

class UrlMappings { 

static mappings = { 

     "/test" (controller: "test") { 
      action = [ GET: "list", POST: "save" ] 
     } 

"/"(view:"/index") 
"500"(view:'/error') 
} 

}

L'application est déployée (éclatées) avec succès dans Tomcat6 dans le contexte monappli (j'ai html statique dans la racine que je peux afficher avec succès).

Le contenu de apache-tomcat-6.0.28 \ webapps \ myproject (si c'est important) est inclus ci-dessous. J'ai dépouillé les choses non essentielles. La classe de contrôleur est déployée, même pour la classe UrlMappings.

Toutes les requêtes HTTP aux variations suivantes

http://localhost:8080/myproject/test/list 
http://localhost:8080/myproject/test/list/ 
http://localhost:8080/myproject/test/ 
http://localhost:8080/myproject/test 

retour 404. Soit est un bug bizarre ou, plus probablement, une simple erreur à laquelle je suis aveugle.

Votre aide est appréciée. Je vous remercie!

| index.html 
| mysql-connector-java-5.1.13-bin.jar 
| 
\---WEB-INF 
    | applicationContext.xml 
    | sitemesh.xml 
    | 
    +---classes 
    | | BootStrap$_closure1.class 
    | | BootStrap$_closure2.class 
    | | BootStrap.class 
    | | Config$_run_closure1.class 
    | | Config$_run_closure1_closure3.class 
    | | Config$_run_closure1_closure4.class 
    | | Config$_run_closure1_closure5.class 
    | | Config$_run_closure2.class 
    | | Config.class 
    | | resources$_run_closure1.class 
    | | resources.class 
    | | UrlMappings$__clinit__closure1.class 
    | | UrlMappings$__clinit__closure1_closure2.class 
    | | UrlMappings.class 
    | | 
    | +---com 
    | | \---myproject 
    | |   TestController$_closure1.class 
    | |   TestController$_closure2.class 
    | |   TestController$_closure3.class 
    | |   TestController.class 
    | |    
    | \---org 
    |  \---grails 
    |   \---tomcat 
    |     ParentDelegatingClassLoader.class 
    |     SearchFirstURLClassLoader.class 
    |     TomcatLoader.class 
    |     TomcatServer$_preStart_closure3.class 
    |     TomcatServer$_preStart_closure3_closure5.class 
    |     TomcatServer$_start_closure1.class 
    |     TomcatServer$_start_closure1_closure4.class 
    |     TomcatServer$_start_closure2.class 
    |     TomcatServer.class 
    |     TomcatServerFactory.class 
    |     
    +---lib 
    |  catalina-ant.jar 
    |  grails-tomcat-plugin-1.0.jar 
    |  jasper-jdt.jar 
    |  mysql-connector-java-5.1.13-bin.jar 
    |  tomcat-dbcp.jar 
    |  tomcat-jasper.jar 
    |  tomcat-juli-adapters.jar 
    |  tomcat-juli.jar 
    |  
    \---tld 
      grails.tld 
      spring.tld 

Répondre

5

renvoie une erreur 404 car aucune vue n'est associée à l'une des actions.

il n'y a rien pour l'application de rendre ...

changer votre code du contrôleur

class TestController { 

    def index = { } 

    def list = { 
    render("params = " + params); 
    } 

    def save = { 
    render("params = " + params); 
    } 

} 

vous verrez une sortie

Questions connexes