1

既存のプロジェクトで 2.0 から Play Framework 2.1-RC1 に移行したばかりですが、何らかの理由で、ビューをレンダリングするときにすべてを Java クラスから Scala クラスにキャストする必要があります。(明らかに、Scala プロジェクトではなく Java プロジェクトで Play を使用しています)

以下はエラーの例です...

render(java.lang.String,scala.collection.immutable.List<models.User>) in views.html.list cannot be applied to (java.lang.String,java.util.List<models.User>)

そして、私の見解の一番上の行は...

@(message: String, users : List[models.User])

このことから、何らかの理由でクラスがjava.util.List同等のスカラに自動的にキャストされていないと推測します。私はこの段階では Java の専門家であり、Scala の専門家ではありません。

render... を呼び出すサンプル コード

public static Result list() {
        List<User> users = MorphiaManager.getDatastore().find(User.class).asList();
    System.out.println("about to try to display list of " + users.size() + " users");
        return ok(list.render("Welcome", msgs));
    }

以下の Build.scala

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "blah-worker"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
  // Play framework dependencies
  javaCore, javaJdbc, javaEbean,
  // Add your project dependencies here,
  "org.apache.camel" % "camel-core" % "2.10.0",
  "org.apache.camel" % "camel-jms" % "2.10.0",
  "org.apache.camel" % "camel-mail" % "2.10.0",
  "org.apache.camel" % "camel-jackson" % "2.10.0",
  "org.apache.camel" % "camel-gson" % "2.10.0",
  "org.apache.activemq" % "activemq-core" % "5.6.0",
  "org.apache.activemq" % "activemq-camel" % "5.6.0",
  "org.apache.activemq" % "activemq-pool" % "5.6.0",
  "com.google.code.morphia" % "morphia" % "0.99.1-SNAPSHOT",
  "com.google.code.morphia" % "morphia-logging-slf4j" % "0.99",
  "cglib" % "cglib-nodep" % "[2.1_3,)",
  "com.thoughtworks.proxytoys" % "proxytoys" % "1.0",
  "org.apache.james" % "apache-mime4j" % "0.7.2",
  ("org.jclouds" % "jclouds-allblobstore" % "1.5.0-beta.4").exclude("com.google.guava", "guava").exclude("org.reflections", "reflections"),
  ("org.reflections"                  %    "reflections"              %   "0.9.7").exclude("com.google.guava", "guava").exclude("javassist", "javassist")
)

val main = play.Project(appName, appVersion, appDependencies).settings(
  // Add your own project settings here
  resolvers += "Morphia repo" at "http://morphia.googlecode.com/svn/mavenrepo/",
  resolvers += "CodeHaus for ProxyToys" at "http://repository.codehaus.org/",
  checksums := Nil
)

}
4

3 に答える 3

1

のインポートの 1 つを更新していませんでしたBuild.scala

具体的には...

import PlayProject._

に更新する必要があります...

import play.Project._

これは移行ガイドでも詳しく説明されています (しかし、私はそれを見逃しました): https://github.com/playframework/Play20/wiki/Migration

于 2012-12-08T04:14:02.793 に答える
1

新しい「javaCore」依存関係がありませんか? Play 2.1 を使用する Java プロジェクトに必要です。移行の詳細については、こちらをご覧ください。

https://github.com/playframework/Play20/wiki/Migration

于 2012-12-07T18:54:34.563 に答える
0

問題が解決するかどうかはわかりませんが、次のインポートを追加してみてください:

import scala.collection.JavaConversions.*;

于 2012-12-01T18:51:08.873 に答える