我的帖子请求如下:
Request URL:http://localhost:9000/getjson?_dc=1381814841666
Request Method:POST
它由Extjs生成。我的路线如下:
POST /getjson{?_dc=<[0-9]+>para} controllers.Application.getjson(para:String)
我的控制器是:
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
def sidebar = Action {
Ok(views.html.sidebar("SBide Bar"))
}
def showerr(info:String) = Action {
Ok(views.html.showerr(info))
}
// how to cooperate with extjs ?
def getjson(para:String) = Action(parse.json) { request => {
val jsval: JsValue = request.body
val w = new PrintWriter(new File("test.txt" ))
w.write("json: %s".format(jsval.asOpt[String]))
w.close()
Ok("get json "+para)
}
}
}
但服务器似乎无法找到该帖子的匹配项,它会回复:
Action not found
For request 'POST /getjson?_dc=1381814841666'
These routes have been tried, in this order:
1 GET / controllers.Application.index
2 GET /sidebar controllers.Application.sidebar
3 GET /error/$info<.+> controllers.Application.showerr(info:String)
4 POST /getjson{?_dc=<[0-9]+>para} controllers.Application.getjson(para:String)
5 GET /assets/$file<.+> controllers.Assets.at(path:String = "/public", file:String)
我该如何解决?任何人都可以看到这件事是什么?
- 编辑
我尝试了测试路线:
GET / test$para<%3f_dc=[0-9]+> controllers.Application.test(para:String)
它只适用于这样的网址:/test%3f_dc=123
,而不适用于/test?_dc=123
。我还尝试将%3f
替换为正则表达式部分中的\?
,它已成功编译,但仍无法正常工作。
那么我该如何为包含?
的网址编写路由?
- EDIT2
我将路线更改为以下内容:
POST /getjson$para<.*> controllers.Application.getjson(para:String)
现在路线工作了,但我得到的para
是空的!最重要的是request.body
是None
!但是,从Chrome审核,我可以看到json已经在Request Payload
,所以我错过了什么?
答案 0 :(得分:0)
这只能这样:
路线:
POST /getjson/$_dc<[0-9]+> controllers.Application.getjson(_dc:String)
你应该这样称呼它:
http://localhost:9000/getjson/1381814841666
不幸的是,我没有找到一种方法使其适用于查询参数。希望它适合你