首页 文章

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

提问于
浏览
2

我正在尝试将我的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 found:java.util.List reason:实际参数java.util.List不能通过方法调用转换转换为scala.collection.immutable.List

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

有任何想法吗?谢谢!

2 回答

  • 1

    试试以下:

    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));
    }
    
  • 2

    在下面的模板代码中尝试:

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

相关问题