-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathFormExampleController.java
More file actions
91 lines (68 loc) · 2.53 KB
/
FormExampleController.java
File metadata and controls
91 lines (68 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package controllers;
import controllers.forms.UserData;
import jakarta.inject.Inject;
import org.slf4j.LoggerFactory;
import play.data.Form;
import play.data.FormFactory;
import play.filters.csrf.AddCSRFToken;
import play.filters.csrf.CSRF;
import play.filters.csrf.RequireCSRFCheck;
import play.mvc.Controller;
import play.mvc.Http;
import play.mvc.Result;
import java.util.Optional;
// tutorial how to use forms
/**
* Example how to get data from database
* Similar example https://petrepopescu.tech/2021/01/building-a-form-in-play-framework/
*/
public class FormExampleController extends Controller {
final org.slf4j.Logger logger = LoggerFactory.getLogger(FormExampleController.class);
@Inject
FormFactory formFactory;
/**
* Show empty form
*/
@AddCSRFToken
public Result showForm(Http.Request request) {
Optional<CSRF.Token> CSRFtoken = CSRF.getToken(request);
Form<UserData> userForm = formFactory.form(UserData.class);
UserData userData = new UserData();
userForm = userForm.fill(userData);
return ok(views.html.formExample.render(userForm, request));
}
/**
* Show form with example data, those could be for example from the database
*/
@AddCSRFToken
public Result showFormWithData(Http.Request request) {
// this data can be read from the database, if you are doing editing of existing data instead of new date
UserData userData = new UserData();
userData.setInputEmail("some@email.com");
userData.setPassword1("123456");
userData.setPassword2("123456");
userData.setAge(77);
// fill the form object with the existing data
Form<UserData> userForm = formFactory.form(UserData.class);
userForm = userForm.fill(userData);
return ok(views.html.formExample.render(userForm, request));
}
/**
* Submit the form, show errors if needed or ok message
*/
@AddCSRFToken
@RequireCSRFCheck
public Result submitForm(Http.Request request) {
// load data from request
// it will be validated using validation method in UserData.java
Form<UserData> userForm = formFactory.form(UserData.class).bindFromRequest(request);
// if there are errors
if (userForm.hasErrors()) {
return ok(views.html.formExample.render(userForm, request));
} else {
// no errors
UserData userData = userForm.get();
return ok("Submit ok\nGot user email: " + userData.toString());
}
}
}