2017-07-06 46 views
0
沒有反映

我是新來的Java遊戲,並正在與2.2.6版本的工作,因爲我是在Windows機器上,並無法獲得最新版本正常工作。的Java遊戲2.2.6:index.scala.html更新controller.Application

我正在學習2.2.6版本的教程,here,並且在教程中大約三分之二的位置出現了「渲染第一頁」部分的問題。

本教程演示瞭如何做一個簡單的,其中有一個表格,用戶可以提交「做」項目,然後出現在屏幕上,並刪除它們的Java播放「待辦事項」應用程序。

在「渲染的第一頁,」教程指導用戶將以下代碼添加到控制器「Application.java」:

public static Result tasks(){ 
    return ok(views.html.index.render(models.Task.all(), taskForm); 
} 

所以,在這一點上,我Application.java樣子這樣的:

package controllers; 

import java.util.ArrayList; 
import java.util.List; 

import com.sun.javafx.tk.Toolkit.Task; 

import play.*; 
import play.mvc.*; 
import play.data.*; 
import models.*; 

import views.html.*; 

public class Application extends Controller { 

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

    public static Result index() { 
    return ok("Hello World"); 
    } 

    public static Result tasks() { 
     return ok(
       views.html.index.render(models.Tasks.all(), taskForm) 
       ); 
     } 


    public static Result newTask() { 
     return TODO; 
     } 

    public static Result deleteTask(Long id) { 
     return TODO; 
     } 
} 

的Eclipse立即強調單詞「渲染」爲紅色,我得到以下錯誤,當我在它懸停:「在類型索引的方法渲染(字符串)是不適用的參數(列表,表)」

教程把我創建一個名爲Task.java模型,如果你看一下Application.java的頂部,它也有我「進口com.sun.javafx.tk.Toolkit.Task,」這我不真的很確定它做了什麼。

這裏是我的模型,Task.java:

package models; 

import java.util.*; 

import play.data.validation.Constraints.*; 

public class Task { 

    public Long id; 

    @Required 
    public String label; 

    public static List<Task> all(){ 
     return new ArrayList<Task>(); 
    } 

    public static void create(Task task){ 

    } 

    public static void delete(Long id){ 

    } 
} 

因此,所有這樣說,這就是我認爲這個問題是:

「渲染」 的參數(S)是/是在視圖「index.scala.html」規定,在斯卡拉

當您第一次使用Java創建遊戲空白的Java應用程序,它自動填充index.scala.html與下面的代碼行:

@(message: String) 

@main("Welcome to Play") { 

    @play20.welcome(message, style = "Java") 

} 

的教程讓我從index.scala.html,這就像我說的是一個視圖中刪除了這一切,並有我這個代碼替換它:

@(tasks: List[Task], taskForm: Form[Task]) 

@import helper._ 

@main("Todo list") { 

    <h1>@tasks.size() task(s)</h1> 

    <ul> 
     @for(task <- tasks) { 
      <li> 
       @task.label 

       @form(routes.Application.deleteTask(task.id)) { 
        <input type="submit" value="Delete"> 
       } 
      </li> 
     } 
    </ul> 

    <h2>Add a new task</h2> 

    @form(routes.Application.newTask()) { 

     @inputText(taskForm("label")) 

     <input type="submit" value="Create"> 

    } 

} 

現在,指數的第一行.scala.html告訴控制器「呈現」需要什麼參數。正如你所看到的,當你製作一個空白的Java Play應用程序時,它開始是@(message:String)。我將它改爲@(tasks:List [Task],taskForm [Task])。所以它應該知道那些是「渲染」應該採取的參數。但由於某種原因,它仍然認爲「渲染」應該採取一個字符串,並給我一個錯誤。

我已經沖刷了好幾個小時的互聯網,並試圖已張貼自己的問題之前已經提出了許多解決方案。

這裏的一些事情,我已經試過:

  1. 這些行添加到build.sbt(用空格之間):

    EclipseKeys.projectFlavor:= EclipseProjectFlavor。爪哇
    EclipseKeys.preTasks:= SEQ(編譯編譯)

,然後收出蝕。從我項目目錄中的命令行運行「play clean-all」「play compile」「play eclipse」,然後將項目重新導入到eclipse中。

  • 刷新在eclipse

  • 忽略錯誤並運行「玩調試運行」,然後將本地主機的一切:9000(一個人說,這發生在他們身上和他們恰恰忽略了錯誤的IDE和它的工作在服務器上的罰款),而是我剛剛在本地主機同樣的錯誤,因爲我在Eclipse了,這是我屏幕shotted:

  • scalaerror

    在這一點上,我不知道如何繼續。我最好的猜測就像我說的那樣,問題是應用程序出於某種原因不知道我更新了「index.scala.html」,從而更改了「渲染」所需的參數,但我不知道爲什麼它不會「知道」它。

    對不起,這是如此之久;我想確保我包括了一切。

    如果有人有任何想法,將是偉大的,謝謝。

    在您的控制器
    +0

    如果新玩起來更好,開始使用最新版本2.6 – cchantep

    回答

    0

    要導入一個JavaFX任務等級:

    import com.sun.javafx.tk.Toolkit.Task; 
    

    但你的觀點是希望你的模型類:

    models.Task 
    

    變化JavaFX的任務進口models.Task進口。