2012-02-16 27 views
2

的一部分有一些網址,如:航線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是唯一部分文件名,顯示在網址:111111222222333333

所以我寫了一個映射路線:

GET /images/$id<\w+>.*   controllers.Images.showImage(id) 

在零件$id<\w+>.*id是匹配的ID,和.*匹配將被忽略的後綴。

但語法不正確,錯誤信息是:

Identifier expected 

如何解決呢?

+0

他們在玩2是語法路線/圖片/:ID不是$ id。 – 2012-02-17 02:27:29

+0

不,我正在使用正則表達式語法 – Freewind 2012-02-17 08:54:08

回答

5

這是目前無法做到這一點與播放2.作爲一個變通方法,您可以處理的控制器動作你的論點:

 
GET /images/:id  controllers.Images.showImage(id) 
 
def showImage(idWithExt: String) = Action { 
    val id = idWithExt.takeWhile(_ != '.') 
    ... 
} 
+0

謝謝,這是作品,但不明確。我會提交一個請求 – Freewind 2012-02-17 08:55:01

+0

啊,這是令人失望的。 @Freewind,你的請求是否有任何反饋? – 2013-01-16 15:39:22