I'm working in creating a java web app using play framework(2.8.19). While creating registration page I'm trying to pass the inputs from the registration page(scala.html) to the controller class where it saves the input to the Postgres table. Here I'm facing null pointer exception while accessing the input fields from the controller class. Below is code for registration page and controller class and my routes file.
Routes.file
`POST /users/ controllers.Users.save(request: Request)`
registraion.scala.html
@(userFrom: Form[commons.Forms.User])
@()(implicit request: Http.Request)
<!--@(userFrom: Form[commons.Forms.User]) (implicit request: RequestHeader, messagesProvider: play.i18n.MessagesProvider)-->
@main("User form") {
<h1>User form</h1>
@helper.form(action = routes.Users.save()) {
<form>
<!-- <legend>User (@userFrom("name").value)</legend>-->
<!-- <legend>User (userFrom("email"))</legend>-->
<div class="form-group">
<label for="name">Email address</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Password">
</div>
<input type="submit" class="btn btn-primary" value="Save">
<a class="btn" href="@routes.Authentication.login()">Cancel</a>
</form>
}
}
Users.java(Controller)
public class Users extends Controller {
private IUserDao iuserDao;
private final Form<Forms.User> formFactory;
private final play.i18n.MessagesApi messagesApi;
@Inject
public Users(FormFactory formFactory, MessagesApi messagesApi) {
this.formFactory = formFactory.form(Forms.User.class);
this.messagesApi = messagesApi;
}
public Result save(Http.Request request) {
Messages messages = this.messagesApi.preferred(request);
System.out.println("calling here");
System.out.println(request.getHeaders());
Form<Forms.User> userForm = formFactory.bindFromRequest(request);
if (userForm.hasErrors()) {
return badRequest(registration.render(userForm));
}
Forms.User user = userForm.get();
System.out.println(user.email); //** <====== Facing error in this line =====>**
models.AppUser searchResult = (AppUser) iuserDao.findByEmail(user.email);
if (searchResult != null) {
return badRequest(registration.render(userForm));
}
iuserDao.create(user);
return redirect(routes.Authentication.login());
}
}
Here the Form User class is
public class Forms {
public static class User {
public String name;
public String email;
public String password;
}
}
Snapshot of error is here.