【问题标题】:Play Framework - Redirect with paramsPlay Framework - 使用参数重定向
【发布时间】:2012-04-04 21:20:04
【问题描述】:

我试图弄清楚如何使用 Scala 在 Play (2.0) 中的控制器操作中进行重定向。

重定向使用

Redirect(routes.Application.index)

工作得很好。

我无法从文档、API 或 Google 中弄清楚如何向调用添加参数。

我来自 Grails,这可以通过以下方式轻松完成:

重定向操作:“索引”,参数:[“键”:“值”] .

我发现的唯一方法是使用字符串 url 和查询字符串调用 Redirect,这看起来很尴尬。

基本上我想以某种方式使用 Redirect(Call),但我不知道如何使用反向路由创建 Call 对象。

我是否遗漏了什么/没有在 Play/Scala 中理解这个概念?

提前致谢!

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多