play2中的路由:如何匹配部分url
有一些网址,例如:
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
它们将映射到方法:
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
请注意,id
是网址中显示的文件名的唯一部分:111111
,222222
code>, 333333
所以我在路由中编写了一个映射:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
在 $id<\w+>.*
部分中,id
匹配这id 和 .*
匹配将被忽略的后缀。
但语法不正确,错误信息是:
Identifier expected
如何修复?
There are some urls like:
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
They will be mapped to a method:
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
Note that the id
is the only part of filename showed in url: 111111
, 222222
, 333333
So I write a mapping in routes:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
In the part $id<\w+>.*
, id
is matching the id, and .*
match the suffix which will be ignored.
But the syntax is incorrect, the error message is:
Identifier expected
How to fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
目前无法通过 Play 2 做到这一点。作为解决方法,您可以在控制器操作中处理您的参数:
It’s not currently possible to do that with Play 2. As a workaround you can process your argument in the controller action: