代码之家  ›  专栏  ›  技术社区  ›  wishihadabettername

RESTURL映射不工作(Grails1.3.3,Tomcat6)

  •  5
  • wishihadabettername  · 技术社区  · 15 年前

    我不熟悉Grails(但不熟悉Groovy或web开发)。

    我正在尝试编写一个接受REST请求的web应用程序。我遇到的问题是,尽管我遵循了-据我所知-的文档,我仍然收到404时,击中什么我认为是正确的网址。

    具体情况如下。

    这个项目是全新的(使用grails1.3.3和支持1.3.3的intellijidea9.0.3)

    一个非常简单的测试控制器:

    package com.myproject
    
    class TestController {
    
      def index = { }
    
      def list = {
        System.out.println("params = " + params);
      }
    
      def save = {
        System.out.println("params = " + params);
      }
    
    }
    

    class UrlMappings {
    
     static mappings = {
    
            "/test" (controller: "test") {
              action = [ GET: "list", POST: "save" ]
            }
    
     "/"(view:"/index")
     "500"(view:'/error')
    }
    

    }

    应用程序在Tomcat6中myapp上下文中成功部署(分解)(我在根目录中有一个静态html,可以成功显示)。

    所有的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 回复  |  直到 15 年前
        1
  •  5
  •   Aaron Saunders    15 年前

    它返回404错误,因为没有与任何操作关联的视图。

    应用程序没有要呈现的内容。。。

    更改控制器代码

    class TestController {
    
      def index = { }
    
      def list = {
        render("params = " + params);
      }
    
      def save = {
        render("params = " + params);
      }
    
    }
    

    您将看到一些输出