Playframework 在表单中播放2.5 java.lang.NullPointerException
我有一个小应用程序,我只想创建一个简单的表单并存储用户输入,但是每次尝试运行该应用程序时,我都会得到一个java.lang.NullPointerException,它告诉我当在definitionForm中声明表单时,控制器类中的index方法出错 这是我的控制器Playframework 在表单中播放2.5 java.lang.NullPointerException,playframework,form-submit,playframework-2.5,Playframework,Form Submit,Playframework 2.5,我有一个小应用程序,我只想创建一个简单的表单并存储用户输入,但是每次尝试运行该应用程序时,我都会得到一个java.lang.NullPointerException,它告诉我当在definitionForm中声明表单时,控制器类中的index方法出错 这是我的控制器 public class HomeController extends Controller { @Inject public static FormFactory formFactory; public Result inde
public class HomeController extends Controller {
@Inject
public static FormFactory formFactory;
public Result index() {
Form<Definition> definitionForm = formFactory.form(Definition.class);
return ok(index.render(definitionForm,"Your new application is ready."));
}
public Result submit(){
Form<Definition> definitionForm = formFactory.form(Definition.class).bindFromRequest();
Definition definition=definitionForm.get();
definition.save();
return redirect(routes.HomeController.index());
}}
我有
ebean.default = ["models.*"]
在我的应用程序conf和playebean插件中,我不确定问题出在哪里 如果有人无意中发现(Tijkikiki已经在评论中说明了这一点),就把它作为一个答案:
FormFactory
字段不应该是静态的
更多信息:
Play 2.5.x文档说明:
要包装类,必须将play.data.FormFactory注入控制器,然后控制器允许您创建表单:
formuserform=formFactory.Form(User.class)
因此,将FormFactory
注入控制器的正确方法如下:
package controllers;
import play.*;
import play.mvc.*;
public class Application extends Controller {
@Inject FormFactory formFactory;
...
}
在注入FormFactory时尝试移除静态,FormFactory似乎根本没有被注入。谢谢,这解决了我的问题。您是否曾经解决过
MailerClient
的空指针问题,我有相同的错误,使用添加到我的控制器中的@Inject-MailerClient-MailerClient
,而不是静态前缀,但这种空指针错误仍然存在。p、 s.play2.6.x
我也试图删除静态
,但仍然不适用于我。
ebean.default = ["models.*"]
package controllers;
import play.*;
import play.mvc.*;
public class Application extends Controller {
@Inject FormFactory formFactory;
...
}