(Reference) Books you are studying https://www.amazon.co.jp/Play-Framework-2%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Java%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E9%96%8B%E7%99%BA-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798133922/ref=cm_cr_srp_d_product_top?ie=UTF8
How to pass the value to the class of the controllers folder → the class of the view folder in the picture below.
-Prepare a variable that can receive arguments like this. ・ If there are multiple, prepare multiple. -Be sure to set the type to the wrapper class type.
@(one: String ,two :String, three:String)
Describe the value you want to pass in this way in `ʻindex.render``.
public static Result index() {
return ok(index.render(
"Sample 1",
"Sample 2",
"Sample 3"
)
}
@main("sample") {
<h1>Hello!</h1>
<p>@one</p>
<p>@two</p>
<p>@three</p>
<p>This is a sample</p>
@helper.form(action=routes.Application.send){<!--①-->
@(helper.inputText(<!--②-->
field = form1("message")
))
<input type="submit"><!--③-->
}
}
action attribute: Specify the destination of the data to be sent by pressing the submit button of the form. (Reference) https://qiita.com/mikuhonda/items/f3126380d3340f3d8a2b input element: Depending on what value is specified for the type attribute, it is possible to specify the type of form parts such as one-line text box, check box, radio button, submit button, reset button, etc. (Reference) http://www.htmq.com/html5/input.shtml
① Call the form object in helper. The action usually specifies the destination address, but here it determines the method to send. (2) Create a text box and store the value in message. ③ Create a send button
Rewrite like this
package controllers;
import play.*;
import play data.*;//PKG for using form helpers
import static plya.data.Form.*;//PKG for using form helpers
import play.mvc.*;
import views.html.*;
public class Application extends Controller {
//Inner class for Form
public static class SampleForm{//Inner class, class for managing the value of submitted form
public String message;//import type="text"Variable for storing tag values
//Action when accessing the route
public static Result index(){
return ok(index.render("Write something.",new Form(SampleForm.class)));
//Create a Form instance by specifying SampleForm class as an argument
}
//Action when accessing send
public static Result send(){
Form<SampleForm> f = form(SampleForm.class).bindFormRequest();
if(!f.hasErrors()){
}
SampleForm date = f.get();
String msg = "you typed:" + date.message;
return ok(index.render(msg,f));
}else {
return badRequest(index.render)("ERROR",form(SampleForm.class)));
}
}
}
public static Result send(){
Form<SampleForm> f = form(SampleForm.class).bindFormRequest();//①
if(!f.hasErrors()){//②
SampleForm date = f.get();//③
String msg = "you typed:" + date.message;//④
return ok(index.render(msg,f));
}else {//Tell the client that an error has occurred
return badRequest(index.render)("ERROR",form(SampleForm.class)));
}
}
What is binding: Image of being assigned (Reference) http://wa3.i-3-i.info/word12448.html
(1) SampleForm is limited in type by generics. In bindFormRequest (), return the value of the form submitted from the client in the bound Form instance. After pressing the send button → go to the root file send → April send is called. ② The error check is entered first (3) By calling get of Form, you can get an instance of the class (SampleForm class) that manages form information. ④
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / controllers.Application.index()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
POST /send controllers.Application.send()
About the difference between POST and GET → POST is used when registering information on the server. GET is used to get information from the server. (Reference) https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf