2014-01-31 220 views
0

我想抓住所有未知的GET操作。玩框架路线

我的路线文件看起来像这样:

GET /      controllers.MainController.index() 
#All other routes 

#finally 
GET  /[^/]+/     controllers.MainController.fault() 

最终GET的定义是因为对上述问题给予优先列表的底部GET操作,否则所有的请求将是真正到了/ [^/] + /条件。

的问题是,它关系到默认捕捉页面说

我怎么能捕获所有路线“未找到操作”?

回答

2

我相信

GET /*route controllers.MainController.fault() 

会更好地工作。 route将捕获收到的路径,您可以将它作为参数传递给您的方法fault

不过,我建议另一种选择:你可以实现一个GlobalSettings对象,你覆盖的方法

def onHandlerNotFound(request: RequestHeader): Future[SimpleResult] 

这种方法将在每次你得到了它不可能找到一个请求时,被称为正确的处理程你可以在这里找到更多的信息:http://www.playframework.com/documentation/2.2.x/ScalaGlobal

+0

完美!那正是我想要的。 GET/*路由控制器.MainController.fault(路由) public static Result fault(String url){ return badRequest(url +“not found”); } – user1275645

+0

现在,我还得到它与自定义全局类的工作。 但定义是有点不同: 倍率DEF onHandlerNotFound(请求:RequestHeader)= { Future.successful(NOTFOUND( views.html.errorpage(Request的))) } – user1275645