1

我正在使用命令模型绑定,并且查看了示例 github 项目,并且在使用依赖项时遇到了问题:

  "org.scalatra" % "scalatra-data-binding" % "2.2.0-RC1"

以示例项目代码为例

abstract class TodosCommand[S](implicit mf: Manifest[S]) extends ModelCommand[S] with ParamsOnlyCommand
class CreateTodoCommand extends TodosCommand[Todo] {
  val name: Field[String] = asType[String]("name").notBlank.minLength(3)
}
case class Todo(id: Integer, name: String, done: Boolean = false)  

当我使用 CommandSupport 特征中的 command[CreateTodoCommand] 方法时,我无法编译,即

scala: type arguments [au.com.xxx.sapi.seo.CreateTodoCommand] do not conform to method command's type parameter bounds [T <: SeoServlet.this.CommandType]
    val cmd = command[CreateTodoCommand]
                     ^

我对 Scala 不太了解,但我假设 ParamsOnlyCommand 扩展了 Command 并且命令支持特征中有这一行,那么应该没有问题:

  type CommandType <: org.scalatra.databinding.Command

任何想法为什么我会遇到这个问题?

干杯,克里斯。

4

2 回答 2

1

您遇到问题的原因很可能是我们仍在链接到一个古老的示例版本,文档不再适用。我以为我已经捕获了文档中的所有示例项目并将它们移至https://github.com/scalatra/scalatra-website-examples,但显然我错过了这个。麻烦您了!

我会看看我今天是否可以解决这个问题,并提供一个编译示例。同时,您可能会尝试将所有与 Scalatra 相关的依赖项更新到 2.2.0 版本 - 看看是否可以立即修复任何问题。

Scalatra 的最新稳定版本目前是 2.2.1,但你需要小心命令,因为我记得 @casualjim 说过他在 2.2.0 和 2.2.1 之间改变了某种程度的工作方式。

于 2013-04-12T07:19:59.683 回答
0

在 Scalatra 2.2.1 中, "org.scalatra" %% "scalatra-commands" % "2.2.0" 我没有问题。但我不知道 scalatra-data-binding 也是独立的。

于 2013-05-08T07:32:55.913 回答