Play Framework - 使用参数重定向
Posted
技术标签:
【中文标题】Play Framework - 使用参数重定向【英文标题】:Play Framework - Redirect with params 【发布时间】:2012-04-04 21:20:04 【问题描述】:我试图弄清楚如何使用 Scala 在 Play (2.0) 中的控制器操作中进行重定向。
重定向使用
Redirect(routes.Application.index)
工作得很好。
我无法从文档、API 或 Google 中弄清楚如何向调用添加参数。
我来自 Grails,这可以通过以下方式轻松完成:
重定向操作:“索引”,参数:[“键”:“值”] .
我发现的唯一方法是使用字符串 url 和查询字符串调用 Redirect,这看起来很尴尬。
基本上我想以某种方式使用 Redirect(Call),但我不知道如何使用反向路由创建 Call 对象。
我是否遗漏了什么/没有在 Play/Scala 中理解这个概念?
提前致谢!
【问题讨论】:
【参考方案1】:艾露'
路由只是一个函数,所以你可以像往常一样传递参数:
// Redirect to /hello/Bob
def helloBob = Action
Redirect(routes.Application.hello("Bob"))
这个sn-p来自http://www.playframework.org/documentation/2.0/ScalaRouting(在底部)
【讨论】:
谢谢!实际上,我首先尝试了这个,但是编译器抱怨说我输入了太多参数。问题是:该操作需要很长时间,但在我定义的路由中,该操作应该有一个默认值。我不得不删除它。所以现在我需要调用 index(None) 或 index(Some(foo))。来自 Grails 这似乎真的很乏味。 +1 这就是类型安全 URL 的全部意义所在。我希望 play 能以他们的本来面目卖给他们更多。 最近的比赛有变化吗?我似乎无法找到/导入路线(我得到价值路线未定义)。【参考方案2】:您也可以避免在控制器中为此创建另一个函数。在您的路由配置中,您可以简单地添加如下内容:
GET /google @controllers.Default.redirect(to = "http://google.com")
【讨论】:
@zenith:希望对您有所帮助 这似乎不起作用。我得到No such file or directory
以上是关于Play Framework - 使用参数重定向的主要内容,如果未能解决你的问题,请参考以下文章