新视图 .scala.html 到 .class 的编译问题
Posted
技术标签:
【中文标题】新视图 .scala.html 到 .class 的编译问题【英文标题】:Compilation Issues for new views .scala.html to .class 【发布时间】:2015-07-13 05:09:52 【问题描述】:我是 Play 框架的新手。我尝试按照示例编译我的游戏框架项目。当我编译示例时,它工作正常,并且在目标中将 .scala.html 视图编译为 .class。我添加了一个新视图,但它没有编译到目标中。任何建议如何解决这个问题?我尝试使用命令行编译激活器,清理并重新构建项目,单独构建 .scala.html,但没有任何尝试奏效。如何在 Play 2.4 中添加新视图并对其进行编译?
package controllers;
import models.Client;
import models.Server;
import models.TestEvent;
import models.TestPlan;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import views.formData.testFormData;
public class Application extends Controller
// Default path request
// public Result index() return ok(index.render("Your new application is ready."));
/* Index Route Page
* Returns the page where the form is filled with the arguments passed
* Or an empty form if the id is 0
*/
public static Result getIndex(long id)
testFormData testData;
// Find the corresponding index result to return (depends on the id)
if(id == 0)
testData = new testFormData();
else
testData = models.TestEvent.makeTestFormData(id);
Form<testFormData> formData = Form.form(testFormData.class).fill(testData);
return ok(index.render(formData,
Client.getClientNameList(),
Server.getServerNameList(),
TestPlan.getTestPlanNameList()));
// Process a form submission
// Bind HTTP Post data to an instance of testFormData
// If errors are found, re-render the page displaying the error data
// If errors are not found, re-render the page displaying good data
public static Result postIndex()
// Retrieve the formData
Form<testFormData> formData = Form.form(testFormData.class).bindFromRequest();
// The retrieved formData has errors
if(formData.hasErrors())
return badRequest(index.render(formData,
Client.getClientNameList(),
Server.getServerNameList(),
TestPlan.getTestPlanNameList()));
// The formData does not have errors
else
// Convert the form data into a testEvent Instance
TestEvent testEvent = TestEvent.makeTestEventInstance(formData.get());
return ok(index.render(formData,
Client.getClientNameList(),
Server.getServerNameList(),
TestPlan.getTestPlanNameList()));
路线:
GET / controllers.Application.getIndex(id:Long ?= 0)
POST / controllers.Application.postIndex()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
【问题讨论】:
您的服务器是否正在运行,您是否有返回新创建视图的控制器操作?当您尝试从 Web 浏览器调用控制器操作时,您会得到什么?这也需要更改 routes.conf。 网络浏览器上的错误是“value getIndex is not a member of controllers.Application” on: GET / controllers.Application.getIndex(id:Long ?= 0) 我配置了 routes.conf匹配 application.java 文件中的操作。但视图不在目标中。 暂时不要关心视图,要么你的路由错了,要么控制器错了。不调用控制器。视图会在需要时编译,因此请先尝试解决此问题。 控制器是问题所在。在我的 IDE 中,我得到的唯一错误是“无法解析符号 'index'”,其中 index 是我的观点之一,这就是我回到观点问题的原因。我尝试导入视图,但它们也没有显示出来。 【参考方案1】:如果在您编码时服务器未运行,则不会编译更改。您可以通过打开持续编译功能来解决此问题,每次将更改写入文件系统时都会进行编译。
为此:
-
启动激活器
使用
~compile
~
表示应立即编译更改。
您可以对服务器执行类似的操作。通过使用~run
,更改将在文件系统更改时立即编译,不会延迟到浏览器刷新。
【讨论】:
感谢您的建议;不幸的是,同样的错误仍然存在。以上是关于新视图 .scala.html 到 .class 的编译问题的主要内容,如果未能解决你的问题,请参考以下文章