0

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

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

2 回答 2

1

仔细查看文档中的路由类型,很可能您可以使用即 跨越多个 / 的动态部分

例如,这会将所有内容/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

于 2013-07-18T07:35:24.453 回答
1

不,但你真的只需要一种路线和一种行动方法来完成我认为你想要的。

配置/路由

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

默认.java

public static Result redirect(String id, String secret)
{
  return redirect(id + "/edit?secret=" + secret);
}
于 2013-07-17T23:00:50.520 回答