play2框架我的模板没有看到。 :package views.html不存在

问题是控制器没有看到我想要使用的模板:

[etl_admin] $ compile [info]将3个Scala源和4个Java源代码编译为D:\ ECLIPSE_WORKSPACES \ play2_apps \ etl_admin \ target \ scala-2.9.1 \ classes … [错误] D:\ ECLIPSE_WORKSPACES \ play2_apps \ etl_admin \ app \ controllers \ EtlWorkflowSeqNodeController.java:7:错误:包views.html.etlworkflowseqnode不存在[error] import views.html.etlworkflowseqnode.list; [错误]
^ [错误] D:\ ECLIPSE_WORKSPACES \ play2_apps \ etl_admin \ app \ controllers \ EtlWorkflowSeqNodeController.java:14:error:找不到符号

[error] list.render(EtlWorkflowSeqNode.findTree(jobId))[错误] ^ [错误]符号:变量列表[错误]
location:class EtlWorkflowSeqNodeController [error] 2 errors [error] {file:/ D:/ ECLIPSE_WORKSPACES / play2_apps / etl_admin /} etl_admin / compile:compile:javac return nonzero exit code [error]总时间:7 s,完成05.06.2012 17时14分44秒

这是控制器代码:

package controllers; import play.mvc.Controller; import play.mvc.Result; import models.EtlWorkflowSeqNode; import play.db.jpa.Transactional; import views.html.etlworkflowseqnode.list; /*LINE #7, Eclipse really tells that there is no such package*/ public class EtlWorkflowSeqNodeController extends Controller { @Transactional public static Result list(Integer jobId) { return ok( list.render(EtlWorkflowSeqNode.findTree(jobId)) ); } } 

我用项目树附加了一个图像。 有这样的包,有名为“list”的模板。 我的日食 我做错了什么

哦,问题很简单! * classes_managed *(此文件夹保存已编译的scala模板)未使用新添加的模板进行更新。 我昨天试着打电话给编译 ,但没有帮助。 新软件包中的新模板未编译。 今天早上我打电话给干净的编译 aaand …万岁! 我确实得到了编译模板和丢失包的问题消失了(不要忘记刷新Eclipse项目,强制它从文件系统更新exisitng项目结构。它喜欢缓存所有内容。)

抱歉令人不安,看起来我在阅读文档时并不专心:(

问题是Eclipse没有看到src_managed文件夹,它由play框架动态更新。

转到项目→属性→java构建路径→库(它是一个选项卡)→添加外部类文件夹

然后选择src_managed文件夹,该文件夹应位于与项目相同的目录中的target-> scala-xxx文件夹中。

这将把src_managed添加到您的构建路径,Eclipse现在将了解这些模板是有效的。

您可能需要在play框架控制台中运行’play clean compile’然后您可能需要在eclipse中运行project – > clean

在Play 2.5中,我能够通过以下方式解决此问题:

导入视图:

 import views.html.index; 

然后在控制器内部:

 return ok(index.render("Hello")); 

像这样的东西没有复杂的问题,奇怪的是使用它像return ok(views.html.index.render("Hello")))导入时无法正常工作然后使用它工作得很好。

当然这里的所有答案都很有用,有时问题只是清理然后编译,但即使这并不是真正解决问题,无论你使用的是什么IDE,我都在使用CLI并且给出了cannot find symbol错误的信息。 。

据我所知,你还没有包名etlworkflowseqnode! 导入列表模板的正确方法应该是这样的:

 import views.html.list; 

或者,如果您要拥有多个视图,则可以使用通配符导入将它们全部导入。

 import views.html.*; 

要解决“包view.html不存在”:

运行“sbt compile”或“sbt clean compile”。 这应该在您的项目中创建一个文件夹结构作为目标\ scala xx \ twirl \ main \ views.html