Playframework 2:conf / routes中的表达式可能吗?

时间:2013-07-17 10:14:55

标签: routes playframework-2.0

有没有办法在 conf / routes 中包含表达式,所以我不必为这些简单的动作创建新的控制器?

GET /:id/:secret  controllers.Default.redirect(to=id+"/edit?secret="+secret)

2 个答案:

答案 0 :(得分:1)

不,但是你真的只需要一条路线和一条动作方法来完成你想要的东西。

<强> CONF /路由

GET /redirect/:id/:secret   controllers.Default.redirect(id:String, secret:String)

<强> Default.java

public static Result redirect(String id, String secret)
{
  return redirect(id + "/edit?secret=" + secret);
}

答案 1 :(得分:1)

仔细查看documentation中的路线类型,最有可能的是你可以使用 动态部分跨越几个/.

举个例子,这个会将/redirect/之后的所有内容作为单个字符串传递:

GET  /redirect/*targetPath   controllers.Application.redirectTo(targetPath:String)

因此,在请求http://localhost/redirect/new/location/123?secret=foo&something=bar中,其值为:new/location/123?secret=foo&something=bar

您可以选择将secret声明为路线参数,因为您可以使用ie。用于检查是否存在的bindFromRequest()方法。 (因此可以与$_GET['secret']

中的PHP进行比较