我使用Play 2.4 with Java。我创建了一个简单的对象:
public class User {
@Constraints.Required
public String email;
public String password;
public String validate() {
}
}
我使用此对象在我的控制器中创建表单:
public MyController extends Controller {
public Result index() {
return ok(mypage.render(Form.form(User.class)));
}
public Result submit() {
Form<User> userForm = Form.form(User.class).bindFromRequest();
...
}
}
现在,我已经有了一个我想要在这个对象中注入的服务,并调用它的一个方法,例如:
public class User {
@Inject MyService myService;
@Constraints.Required
public String email;
public String password;
public String validate() {
return myService.authenticate(email, password);
}
}
执行此操作时,调用bindFromRequest()方法时会得到RuntimeException: java.lang.reflect.InvocationTargetException
。当我尝试调用myService的方法authenticate
时,会出现NullPointerException。 是否正确注入了服务?
在特定情况下是否有一些特殊的事情 - 当请求绑定到表单对象时,validate()
方法会被自动调用这一事实?