我的项目需要一个可重复使用的控制器,但我想根据用途略微配置。我尝试在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个值,它看起来会起作用,但这只是愚蠢的。大多数情况下,我们只需要设置一个或两个参数(如果有的话)。
有没有更好的方法'配置'这样的可重复使用的控制器?
答案 0 :(得分:1)
我认为您必须使用route
语法在?=
文件中设置 all 默认参数。
GET / controllers.SimplePage.index(pageTitle ?= "Test Page", baseUrl ?= "")
GET /subdir controllers.SimplePage.index(pageTitle ?= "Test Page 2", baseUrl ?= "foo")