2016-05-15 80 views
0

我正在查看Play!框架,使用Java(不想在同一時間學習新的框架一種新的語言 - 我將納入斯卡拉,因爲我知道),到目前爲止它是真棒。Play框架表單(Java)

雖然我對錶單有點困難。我仍然堅持第一部分here,據我所知,我需要得到一個FormFactory或相關的實例,但我不知道它可能位於哪個包,或formFactory也是另一個神奇的方法(如ok)。

任何指針,將不勝感激!

編輯這裏是我的代碼:

package controllers; 

import com.google.inject.Inject; 
import play.data.FormFactory; 

import play.api.data.Form; 
import play.mvc.*; 

public class User extends Controller { 
    @Inject 
    FormFactory form; 
    final static Form<model.User> userForm = form(model.User.class); 

    public Result post() { 
     model.User user = userForm.bindFromRequest().get(); 
     return ok("The form was received!: " + user); 
    } 
} 

play.data包不退出對我來說。也許我做了不正確的安裝?很明顯,我確實從IntelliJ啓動了這個項目

+0

複製從你鏈接的頁面:'要包裝一個類,你必須注入一個play.data.FormFactory到你的控制器然後允許你創建表格' –

+0

@Łukasz是啊,我看到了;問題是試圖注入該類引發異常。顯然這個班不存在。我會更詳細地更新我的問題。 – iLikeBreakfast

+1

首先,我認爲你的表單不應該是靜態的。根據文檔,你的調用應該更像'userForm = form.form(model.User.class)',因爲'form'是'FormFactory'的方法。但關於我不知道的遺失包。嘗試從激活器創建你的項目也許?也許你有錯誤的遊戲版本。 –

回答

2

一個問題是您的表單不應該是靜態的,因爲在注入FormFactory之前無法初始化它。

根據文檔此呼叫

Form<model.User> userForm = form(model.User.class); 

應該是

Form<model.User> userForm = form.form(model.User.class) 

作爲formFormFactory方法。

如果程序包缺少類路徑中的某些配置問題或錯誤的播放版本。一個工作項目通常可以通過催化劑獲得。