2010-07-22 2 views
5

Я новичок в Grails (но не в Groovy или в веб-разработке).REST URL-адреса не работают (Grails 1.3.3, Tomcat6)

Я пытаюсь написать веб-приложение, которое принимает запросы REST. Проблема в том, что, несмотря на то, что, насколько я могу судить, документация, я все равно получаю 404s, когда я нахожу, что верю в правильный URL.

Подробности следующие.

Проект является совершенно новый (с использованием Grails 1.3.3 и 9.0.3 IntelliJ IDEA, который поддерживает 1.3.3)

Очень простой контроллер теста:

package com.myproject 

class TestController { 

    def index = { } 

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

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

} 

и столь же URL-отображение , пытаясь сопоставить все запросы GET с методом list() контроллера. Согласно документам и книге Grails in Action, имя контрольного контроллера в сопоставлении будет сопоставлено с TestController.

class UrlMappings { 

static mappings = { 

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

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

}

приложение развертывается (разобранном) успешно Tomcat6 в контексте MYAPP (у меня есть статический HTML в корне, который я могу отобразить успешно).

Содержание apache-tomcat-6.0.28 \ webapps \ myproject (если это имеет значение) приведен ниже. Я убрал несущественные вещи. Класс контроллера развернут, то же самое для класса UrlMappings.

Все HTTP запросы следующих изменений

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

возвращение 404. Либо это странно ошибка или, что более вероятно, просто ошибка, к которой я слеп.

Ваша помощь приветствуется. Спасибо!

| 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 

ответ

5

он возвращает ошибку 404, потому что нет никакого представления, связанного с каким-либо из действий.

нет ничего для применения чтобы сделать ...

изменить код контроллера

class TestController { 

    def index = { } 

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

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

} 

вы увидите некоторые результаты

Смежные вопросы