覆盖方法似乎不起作用

时间:2013-10-10 09:08:56

标签: scala playframework-2.1 playframework-2.2

我有3条路线

POST /api/v1/items/ controllers.Application.update
POST /api/v1/items/:item_type controllers.Application.update(item_type: String)
POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int)

和他们的3个相应的行动。还有一个错误:

[error] /my_app/conf/routes:3: method update is defined twice
[error]   conflicting symbols both originated in file '/home/alex/my_app/target/scala-2.10/src_managed/main/routes_reverseRouting.scala'
[error] POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int)

请注意,不应该是参数的任何默认值,这就是我需要将这些操作分开的原因。

1 个答案:

答案 0 :(得分:1)

游戏方法按名称调用。参数被省略。方法名称必须是唯一的。您不能为控制器使用相同的名称(如果您有两个包)

请使用默认参数:

POST /api/v1/items/ controllers.Application.update(item_type: String = "", id: Int = 0)
POST /api/v1/items/:item_type controllers.Application.update(item_type: String, id Int =0)
POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int)