新视图 .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 的编译问题的主要内容,如果未能解决你的问题,请参考以下文章

Play/Scala 中的隐式参数和组合视图

Play2.2.1 父项目同名视图不能调用子播放项目视图

如何将按钮添加到“扩展视图”类?

VueJs 路由视图转换

将 bootstrap.css 文件链接到 Play 框架中的 scala.html 页面

找不到参数 flash 的隐式值