【问题标题】:Optional named parameter in Play FrameworkPlay 框架中的可选命名参数
【发布时间】:2013-10-07 15:27:35
【问题描述】:

在 Rails 中我可以说:

get 'path1/:path2/(:path3)' => "controller#action"

其中path3 是一个可选的named 参数,它前面有一个斜线。在 Play Framework 中,我只找到了执行此类操作的方法,但仅适用于带有 ? 的参数。

如何在 Play Framework 中做到这一点?

【问题讨论】:

    标签: scala playframework playframework-2.1 playframework-2.2


    【解决方案1】:

    2.1 已删除对可选路径参数的支持,see

    我们删除了路径绑定中的 Option[...] 支持,因为拥有可选路径参数没有意义。如果您愿意,您可以实现自己的可绑定路径以支持它。

    here 描述了一种可能的解决方案(即自己实现可绑定)。

    但最简单的解决方案可能是简单地定义两条路线:

    GET   /path/:a                   controllers.Application.show(a, b = "default")
    GET   /path/:a/:b                controllers.Application.show(a, b)
    

    顺便说一下,您指的是路径参数和查询参数(URL 中? 之后的部分)。 Named parameters 是一个完全不同(且不相关)的故事。

    【讨论】:

    • 如果没有默认值怎么办(我不知道也不应该知道默认值)?这应该是一个完全可选的参数。
    • 嗯,你想做不同的事情,具体取决于参数是否设置,对,否则一开始就完全没用。因此,您可以简单地将两条路径路由到执行相应工作的不同控制器功能,我真的看不出这里有什么困难
    • 为什么不只使用GET /path/:a controllers.Application.show(a) 而不是使用默认参数?
    • 这正是我在评论中的建议。但这意味着您必须重载 show 的版本,一个带有一个参数,一个带有两个参数。
    猜你喜欢
    • 2012-03-28
    • 2022-06-14
    • 2012-06-16
    • 2010-10-27
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多