玩!无法将java列表转换为scala列表

时间:2014-01-29 15:25:43

标签: java scala playframework playframework-2.0

我正在尝试将我的java控制器中的字符串列表传递给scala模板 这是视图代码:

public static Result index() {
    List<String> scripts = Arrays.asList(
        "script1.js",
        ...
        "scriptN.js"
    );

    return ok(views.html.index.render(scripts));
}

这是tempate代码:

@(scripts: List[String])

@main("test page")(scripts) {
    ... html here ...
}

我收到的错误(在Typesafe Activation Compile页面中):

  

类索引中的方法呈现不能应用于给定类型;
  required:scala.collection.immutable.List
  发现:java.util.List
  原因:实际参数java.util.List无法转换为scala.collection.immutable.List by   方法调用转换

有没有办法解决它而不使用java&gt; scala转换?
我发现了这个问题:Play doesn't convert java-list to scala-list描述了类似的情况,虽然我没有任何我知道的templateImports,我甚至没有看到Build.scala文件......

有什么想法吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

尝试以下:

import scala.collection.JavaConverters;

public static Result index() {
    List<String> scripts = Arrays.asList(
        "script1.js",
        ...
        "scriptN.js"
    );
    scala.collection.immutable.List<String> ls = JavaConverters.asScalaBufferConverter(scripts).asScala().toList();
    return ok(views.html.index.render(ls));
}

答案 1 :(得分:1)

在模板代码中尝试以下内容:

@import java.util   
@(scripts: util.List[String])