在Play Controller中使用默认参数

时间:2014-05-14 18:38:33

标签: scala playframework playframework-2.2

我的项目需要一个可重复使用的控制器,但我想根据用途略微配置。我尝试在action方法中使用默认参数,如下所示:

object SimplePage extends Controller {

  def index(pageTitle: String,
            baseUrl: String = "") = Action {

像这样路由:

GET / controllers.SimplePage.index(pageTitle="Test Page")
GET /subdir controllers.SimplePage.index(pageTitle="Test Page 2", baseUrl = "foo")

但是我收到这样的错误:

Error:(5, -1) Play 2 Compiler:  Compilation error[Using different overloaded methods is not allowed. If you are using a single method in combination with default parameters, make sure you declare them all explicitly.]

我简化了一下。实际上,有5个不同的参数,合理的默认值。如果我只是为每个用法指定了所有5个值,它看起来会起作用,但这只是愚蠢的。大多数情况下,我们只需要设置一个或两个参数(如果有的话)。

有没有更好的方法'配置'这样的可重复使用的控制器?

1 个答案:

答案 0 :(得分:1)

我认为您必须使用route语法在?=文件中设置 all 默认参数。

GET /       controllers.SimplePage.index(pageTitle ?= "Test Page", baseUrl ?= "")
GET /subdir controllers.SimplePage.index(pageTitle ?= "Test Page 2", baseUrl ?= "foo")