1

我正在尝试将我的模型对象作为参数发送GETPlayFramework

我创建了case class Game,看起来像这样:

case class Game(name: String, url: String){

}

当我尝试将它作为参数发送给我的方法时(路由文件):

GET     /trophies/:game             controllers.Application.trophies(game: model.Game)

它告诉我我需要一个PathBindable对象,所以我做了一些研究并提出了一个我认为有效的实现:

case class Game(name: String, url: String) implements PathBindable[Game] {
    def bind(key: String, value: String): Game = {
        val text = value.split(";")
        Game(text(0), text(1))
    }

    def unbind(key: String, game: Game): String = {
        game.name + ";" + game.url
    }

    def javascriptUnbind(): String = ??? 
    def unbind(x$1: String): String = ???
}

为了绑定它,我Game从用 分割的字符串创建一个;,要取消绑定它,我只创建分割的字符串。

当我使用它时,我得到一个Bad Request,指出该操作未找到,但它存在,正如我在上面的路由文件片段中显示的那样。

我的实现有问题吗?

4

1 回答 1

1

看起来您使用了Java API中的 PathBindable 并错过了 noarg 构造函数。但你需要Scala API

此外,请确保您的游戏路径表示是 URL 编码的(不应包含原始斜杠“/”)或不匹配。但是您可以绑定一个 URL 部分,/trophies/*game以便它与此处记录的奖杯之后的整个剩余 URL 相匹配。

于 2013-10-16T06:26:25.177 回答