Отображения URL-адресов REST не работают (Grails 1.3.3, Tomcat6) - PullRequest
5 голосов
/ 22 июля 2010

Я новичок в Grails (но не в Groovy или в веб-разработке).

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

Подробности заключаются в следующем.

Проект совершенно новый (используется Grails 1.3.3 и Intellij IDEA 9.0.3, который поддерживает 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

1 Ответ

5 голосов
/ 22 июля 2010

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

приложению нечего визуализировать ...

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

class TestController {

  def index = { }

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

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

}

вы увидите вывод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...