Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Play Framework 2.2.1-编译错误:“0”;类索引中的方法render无法应用于给定类型&引用;_Java_Scala_Playframework_Playframework 2.2 - Fatal编程技术网

Java Play Framework 2.2.1-编译错误:“0”;类索引中的方法render无法应用于给定类型&引用;

Java Play Framework 2.2.1-编译错误:“0”;类索引中的方法render无法应用于给定类型&引用;,java,scala,playframework,playframework-2.2,Java,Scala,Playframework,Playframework 2.2,我对Play框架还不熟悉,正在尝试从手册中构建Todo列表 当我尝试运行该应用程序时,出现以下错误: Compilation Error error: method render in class index cannot be applied to given types; 我的代码是(相关部分): MainController.java: final static Form<Task> taskForm = Form.form(Task.class); public stat

我对Play框架还不熟悉,正在尝试从手册中构建Todo列表

当我尝试运行该应用程序时,出现以下错误:

Compilation Error
error: method render in class index cannot be applied to given types;
我的代码是(相关部分):

MainController.java

final static Form<Task> taskForm = Form.form(Task.class);

public static Result tasks() {
    return ok(
            views.html.index.render(Task.all(), taskForm)
    );
}
我环顾四周,发现最近的线程是一个,但我无法使用它解决问题(可能是由于对环境/框架缺乏了解…)

最后值得一提的是:
如果我将'index.sacala.html'更改为无参数(并相应地更改'MainController',则一切都会正常工作

如果您有任何关于解决此编译错误的想法,将不胜感激

编辑:
任务.all()
代码是:

public static List<Task> all() {
    return new ArrayList<Task>();
}
公共静态列表所有(){
返回新的ArrayList();
}

您的软件包很可能是
型号
而不是
型号
不是吗

顺便说一句,此软件包是自动导入的,因此您只需使用:

 @(tasks: List[Task], taskForm: Form[Task])
嗯,改变…实际上登录控制台就说明了一切

[error] /www/play20apps/testing/Todo-List/app/controllers/MainController.java:24: error: method render in class index cannot be applied to given types;
[error]         return ok(views.html.index.render(Task.all(), taskForm));
[error]                                   ^
[error]   required: List<Task>,play.api.data.Form<Task>
[error]   found: List<Task>,play.data.Form<Task>
[error]   reason: actual argument play.data.Form<Task> cannot be converted to play.api.data.Form<Task> by method invocation conversion
[error] 1 error
正如注释
*.api.
中提到的,导入是针对Scala的,而普通是针对Java的,这是游戏2中的经验法则+


PostScriptum:刚刚意识到在你的
build.sbt
中你有
play.Project.playscalSettings
,实际上它应该是
play.Project.playJavaSettings
,这个更改修复了你在Activator上的问题。

看起来像是
Task.all()
返回一个Java列表,而scala模板可能需要一个scala列表

如果可能,我建议更改
Task.all()
的返回类型,或者完全限定模板中的定义:

@(tasks: java.util.List[Models.Task], taskForm: Form[Models.Task])

尽管比西尔的回答有一些很好的见解和技巧,但它并没有解决这个问题。
最后,我放弃了类型,使用play comamnd line从头开始创建了该站点,它工作得非常好

我从未在这个问题中找到问题的根源,我将把这个答案留给谷歌的未来参考

如果有更好的解决方案,请留下您的答案,如果它有效,我会将其标记为接受


编辑:
@biesior很友好地检查了我的代码,他确实发现了问题。如果您有相同的问题,请查看他的答案。

我很想从您那里得到一个答案:0)我注意到您在这门课程中的答案质量最好。。。实际上是
Models
我把它改成了
Models
还是不走运。这可能是值得一提的,我用这个项目。默认情况下,我没有
models
文件夹,我在
controllers
下手动创建了它,如果我没有添加导入,它就不会被导入(尽管
app
文件夹,它是
controller
的父文件夹,在
项目结构
窗口中标记为
source
)您确定控制器中的导入正确吗?您导入play.*、play.mvc.*等,但我认为您应该导入play.api.mvc.*和co。不确定这是否适用于与Java一起使用play,但在Scala中就是这样,您只导入play下的内容。api@vptheron不<代码>*.api.导入是针对Scala的,而普通导入是针对Java的,这是游戏2中的经验法则。+请注意,我在没有activator的情况下从头开始实现了一切,它工作得非常完美。不确定区别是什么,在我这方面,我做的一切都是一样的……请注意Play2.3没有playJavaSettings。请参阅迁移指南。是否可以显示
Task.all()
的定义?至少返回类型。@vptheron我用
Task.all()
的定义修改了问题,如您所建议的那样更改了模板中的定义,结果相同。。。可能是一个新手问题,但是-您建议将
Task.all()
返回类型更改为什么?
[error]   required: List<Task>,play.api.data.Form<Task>
[error]   found: List<Task>,play.data.Form<Task>
@(tasks: java.util.List[Task], taskForm: play.data.Form[Task])
@(tasks: java.util.List[Models.Task], taskForm: Form[Models.Task])