这个PathBindable出了什么问题?

时间:2013-10-15 17:56:59

标签: scala playframework playframework-2.0

我正在尝试将GET PlayFramework的{​​{1}}上的模型对象作为参数发送

我创建了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,声明找不到Action,但它存在,就像我在上面的路径文件片段中显示的那样。

我的实施有问题吗?

1 个答案:

答案 0 :(得分:1)

看起来你使用了来自Java API的PathBindable而错过了noarg构造函数。但是你需要Scala API

此外,请确保您的游戏路径表示是URL编码的(它不应包含原始斜杠“/”)或不匹配。但是您可以使用/trophies/*game绑定网址部分,以便它与奖杯后的整个剩余网址匹配,如here所述。