2016-05-15 86 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方法。

如果程序包缺少类路径中的某些配置问题或错误的播放版本。一个工作项目通常可以通过催化剂获得。