我正在grails中实现一个rest服务,所以我创建了一个控制器:
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出了什么问题?
答案 0 :(得分:3)
对于初学者,您没有使用您定义的映射。你指定一个id
参数但是传递er3f
并且不使用/ syntax但是把它放在querystring中? - 调用http://localhost:8080/MyApp/loader/12345678将使用语法。
但是你也在映射中混合了两种不同的方法,因此它不会被触发。你可以使用Map并在parens中指定动作和控制器,或者使用Closure并在那里指定它们,但是你不能混合它们。
最后,您已指定id
参数但正在控制器中查找er3f
参数,因此该参数始终为null。
这是您想要的映射:
"/loader/$er3f?" {
action = [GET:"save"]
controller = 'loader'
}