2011-02-02 55 views
0

我用Grails实现REST服务的问题,所以我创建了一个控制器:Grails的UrlMappings

class LoaderController { 

    def index = { } 

    def save = { 

    String input = params.er3f 
    render 'OK' 

    } 
} 

而且加入UrlMappings如下:

"/loader/$id?" (controller:loader) { 
    action = [GET:"save"] 
} 

当我运行http://localhost:8080/MyApp/loader?er3f=12345678,我得到一个404和描述请求的资源(/MyApp/WEB-INF/grails-app/views/loader/index.jsp)不可用。

但是当我运行http://localhost:8080/MyApp/loader/save?er3f=12345678工作正常。

我的UrlMappings有什么问题?

回答

3

对于初学者,您没有使用您定义的映射。你指定一个id参数,但通过er3f,不要使用/语法,但把它放在查询字符串中? - 调用http://localhost:8080/MyApp/loader/12345678将使用该语法。

但是你也在映射本身中混合了两种不同的方法,所以它不会触发。您可以使用Map并在parens中指定操作和控制器,或者使用Closure并在那里指定它们,但不能混合它们。

最后,您已指定id参数,但在控制器中查找er3f参数,以便始终为空。

这是你想要的映射:

"/loader/$er3f?" { 
    action = [GET:"save"] 
    controller = 'loader' 
} 
+0

+1不知道,我们不能在括号用封 – fabien7474 2011-02-02 21:27:03