05. Using @ModelAttribute and Binding Results

14 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€67.10
List Price:  €95.86
You save:  €28.76
£55.67
List Price:  £79.54
You save:  £23.86
CA$100.49
List Price:  CA$143.56
You save:  CA$43.07
A$111.96
List Price:  A$159.95
You save:  A$47.99
S$94.87
List Price:  S$135.54
You save:  S$40.66
HK$544.16
List Price:  HK$777.41
You save:  HK$233.24
CHF 62.56
List Price:  CHF 89.37
You save:  CHF 26.81
NOK kr792.29
List Price:  NOK kr1,131.89
You save:  NOK kr339.60
DKK kr500.54
List Price:  DKK kr715.08
You save:  DKK kr214.54
NZ$123.74
List Price:  NZ$176.78
You save:  NZ$53.04
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.19
৳8,330.24
List Price:  ৳11,900.85
You save:  ৳3,570.61
₹5,945.56
List Price:  ₹8,494.03
You save:  ₹2,548.46
RM315.51
List Price:  RM450.75
You save:  RM135.24
₦108,149.19
List Price:  ₦154,505.46
You save:  ₦46,356.27
₨19,403.53
List Price:  ₨27,720.51
You save:  ₨8,316.98
฿2,393.75
List Price:  ฿3,419.79
You save:  ฿1,026.04
₺2,454.67
List Price:  ₺3,506.82
You save:  ₺1,052.15
B$425.95
List Price:  B$608.53
You save:  B$182.58
R1,282.09
List Price:  R1,831.63
You save:  R549.54
Лв131.15
List Price:  Лв187.37
You save:  Лв56.21
₩101,234.93
List Price:  ₩144,627.53
You save:  ₩43,392.60
₪254.67
List Price:  ₪363.83
You save:  ₪109.16
₱4,117.86
List Price:  ₱5,882.91
You save:  ₱1,765.05
¥10,949.58
List Price:  ¥15,642.93
You save:  ¥4,693.35
MX$1,405.49
List Price:  MX$2,007.92
You save:  MX$602.43
QR254.12
List Price:  QR363.05
You save:  QR108.92
P963.49
List Price:  P1,376.48
You save:  P412.98
KSh8,999.72
List Price:  KSh12,857.29
You save:  KSh3,857.57
E£3,561.31
List Price:  E£5,087.81
You save:  E£1,526.49
ብር8,689.79
List Price:  ብር12,414.52
You save:  ብር3,724.72
Kz64,250.82
List Price:  Kz91,790.82
You save:  Kz27,540
CLP$69,143.42
List Price:  CLP$98,780.55
You save:  CLP$29,637.13
CN¥510.67
List Price:  CN¥729.56
You save:  CN¥218.89
RD$4,244.94
List Price:  RD$6,064.47
You save:  RD$1,819.52
DA9,440.04
List Price:  DA13,486.35
You save:  DA4,046.31
FJ$162.13
List Price:  FJ$231.62
You save:  FJ$69.49
Q537.12
List Price:  Q767.35
You save:  Q230.22
GY$14,584.29
List Price:  GY$20,835.60
You save:  GY$6,251.30
ISK kr9,693.35
List Price:  ISK kr13,848.23
You save:  ISK kr4,154.88
DH701.59
List Price:  DH1,002.31
You save:  DH300.72
L1,285.64
List Price:  L1,836.70
You save:  L551.06
ден4,127.89
List Price:  ден5,897.23
You save:  ден1,769.34
MOP$558.06
List Price:  MOP$797.27
You save:  MOP$239.20
N$1,283.39
List Price:  N$1,833.49
You save:  N$550.10
C$2,565.21
List Price:  C$3,664.75
You save:  C$1,099.53
रु9,482.30
List Price:  रु13,546.73
You save:  रु4,064.42
S/259.58
List Price:  S/370.84
You save:  S/111.26
K282.68
List Price:  K403.85
You save:  K121.16
SAR262.90
List Price:  SAR375.59
You save:  SAR112.68
ZK1,929.21
List Price:  ZK2,756.13
You save:  ZK826.92
L333.95
List Price:  L477.10
You save:  L143.14
Kč1,686.22
List Price:  Kč2,408.98
You save:  Kč722.76
Ft27,781.83
List Price:  Ft39,690.03
You save:  Ft11,908.20
SEK kr772.17
List Price:  SEK kr1,103.14
You save:  SEK kr330.97
ARS$71,242.69
List Price:  ARS$101,779.64
You save:  ARS$30,536.94
Bs481.71
List Price:  Bs688.19
You save:  Bs206.47
COP$305,135.87
List Price:  COP$435,927.07
You save:  COP$130,791.20
₡35,171.10
List Price:  ₡50,246.58
You save:  ₡15,075.48
L1,769.55
List Price:  L2,528.04
You save:  L758.48
₲543,563.42
List Price:  ₲776,552.46
You save:  ₲232,989.03
$U3,109.25
List Price:  $U4,441.97
You save:  $U1,332.72
zł286.15
List Price:  zł408.81
You save:  zł122.65
Already have an account? Log In

Transcript

Inefficient, let us learn about our generate model attribute annotation and binding the self. accurate model attribute annotation can be added on methods or on method arguments. I have given two examples over here, the first one, the annotation has added a border method. In the second example, the annotation is added on a method argument. What is the purpose of address model attribute? It is used for binding the RS method argument.

Our method return type to one name that we viewed. In the previous example, when we want to give a name for the model object, we use model map r we can go in for model we just give more up I mean, we just added math.io attribute, the dummy name, employee comma the object. Instead of using model, we can go in for model attribute, we're binding this employee model to the GMP model attribute. This EMP can be retrieved in the view page. And in this example, we have got a call manager dot find account what is the return type and account object. This account object is bound to the model attribute.

Here we have not given any name. If we don't give any name camel case or the lower case of that class will be taken into consideration. So the model attribute name here is a code. So model attribute is used for binding the method arguments are the method return type to a name that reviewed you can retrieve the model of In the view page using this named attribute, let us discuss how this model attribute is used on method arguments. In the previous program, we were trying to retrieve the form field values using request Param. And these were assigned to the method parameters.

Once the values are available in method parameters, we created a model object employee object and the values were assigned to the instance variable, employee employee equal to then we were appending it to the instance variables here. That's what I'm saying. These are prom seals are saying to method parameters. From the method parameters we are assigning it to the model object. This is what we have done the same method here I'm using model attribute EMP employee when this method is getting called Sunday from from Sunday for paid the The value for this argument is taken from the model, the model is nothing but the employee class. Spring checks whether you are having a model with instance variables that are similar to the farm, if you are a farmer having four form fields, your model also should have the same number of instance variables with the same name.

So what actually it will do spring will create the objects and call all the setter methods. So, you don't have to go in for request for with a request model object that is in our case employee objects, and assign the values for the instance variables from the form field values. So this employee is loaded with the form field values. You don't have to use record parents and you don't have to call the getter setter method who's creating the object spring once object is created, now you need to send it to the Explain to the Wii U PE with a dummy name. So, for that we are using model attribute model attribute is equal to model that add attribute EMP comma employee. If you give this model attribute in that scenario, the model name or the dummy name will be employee only.

So, the number of lines of code that you have returned is completely reduced. This is our method argument. Similarly, you can add model attribute a border method. Again your answer you are just doing it only for the objects here the object is a code object. What is the dummy name here? Because you're not given any name.

The model name or the dummy name is lowercase r code when you're trying to use model attributes or border method, in that case, these methods will be called even before request mapping. That is dogs Already that the opponent object is ready with a name attribute key in this case it is a code. Depending upon your requirements, you can use model attributes either with about a method or on a method argument. Now, what we will do with will go back to eclipse, we will modify the same program that we have done earlier, I am an eclipse we are going to work on the same application only I have got this add employee method, we need to modify this method. I don't want to disturb this method. So, let me just copy the same method and I will comment it Ctrl V. Now I don't need any request Param and model map.

So, the method is without any parameters. Let me remove all these coding inside this add employee method. This add employee is just going to have employees parameter. Let me try to print the employee object Okay. Now, what is the flow first actually it is going to EMP form dot JSP when you click Submit button it'll enter into this particular method here you have got employee. So, it is a responsibility of spring framework to create the employee objects I mean take all the values of the form fields and call the setter methods so that the instance variables are populated.

When you try to print the employee object, it has to print the employee object properly with all the values how actually spring will create the employee objects only if the class is annotated with at the rate employee or the rate component. So I am just annotating this class with a direct component. Okay, now, let me run this application. I have not gone in for this model attribute because I have not used modeling attribute what will be the model name or the dummy name the same name as that of the method argument it will be employee only. Let me run spring MVC forms. Home dot JSP page has come let me click the link this is show from the JSP if we add the Data Click Add employee now I'm going to search from EMP success dot JSP here I am trying to print employee What is this?

This is a name which am getting some EMP controller This is the model name. We have not used model attributes labor we have used model map or model and view our model automatically it is done by spring. So, spring creates the employee object and cause the setter method to populate the instance variable so the form field values Now I will show you the difference. Let me add a threat model attribute I will give it the file name EMP. Let me save this I'll rerun the application we are trying to retrieve only employees but what is the model name? We you have changed the model name to EMP it will not give any output let us check that out in a status.

Let me click the link father data to default let me click Add employee. Now I am not getting the output Why? Because in EMP controller I have given the model name of EMP, this is equal to map dot add attribute EMP comma employee for the employee object or for the employee model object you are giving the model dummy name of EMP, so how will you retrieve it? You have to retrieve it using this EMP only now I will just change it. Save this. I'll come back to you Let me refresh.

Now I'm getting the output can you understand? So, our direct model attribute is used to bind this method argument to a named attribute in this case employee object was bound to this EMP domain name, this is about model attributes. Now, let us talk about binding research before moving to binding the cell. Let us also talk about data binding. What is data binding we are whatever we have done till now is called as data binding that is, spring is trying to create a model object at bind the form field values to the instance variables. This concept is called as data binding data binding can be done it can be done in different ways.

It can be done using session attributes using model attribute are using the default constructor. So, what we are seeing is using the defaults on sticker spring is creating an object and calling the setter method it is not retrieving the object from the model attributes are it is not retrieving the objects from session attributes going forward we will be seeing how to retrieve it from the session attributes and obtain values to that particular object. So, data binding is the main concept in spring wherein, the model object is assigned values from the form field values, the request parameters are bound to the instance variables of the model. Now, let us talk about binding which says what is binding this well binding the site is used to hold the result of a validation that is, once data binding is done by spring validation happens, what kind of validation checking in for the type conversion if it is not happening in that scenario, it is an error.

These kind of validation errors are taken chat by this binding reseller going forward, we will be doing validation of this form, what kind of validation checking in for the length of the name checking in for the password pattern checking in for the age limit, then the length of the phone number checking whether it is a proper email all these are valid validations if the user has not entered these data properly, in that scenario validation errors occur all these kind of validation errors or take out all these the sense of validation is taken care by this binding the cells binding the cells will hold the result of the validation. Now, to start with let us see a simple type conversion. We have salary in care in salary you we are trying to enter a string instead of a number Type conversion error occurs This is taken care by binding result.

Let me show you that I am working on the same application the same answer I am going to use the same method. Let me copy this and commented when you're going to use binding resell binding the cells should be added next to the model attribute parameters. So, in our case, it was the employee table. Now, whenever we wanted to add parameters to the method, we added it in whichever way we want, but if you want to use binding results, it has to be added next to the parameter that is annotated with model attributes. The reason is bind will be called only after the data binding is completed. Now let me add this binding result as parameters.

This is the second parameter. Here I can check you Result dot has yours you are checking whether there are errors if there are errors are there automatically it will be added to this binding result objects. Here I am trying to use half errors method I am checking whether the binding result is having the result of validation it will have results only if there are errors. So, I'm just using this method it returns a Boolean value. If it is true then it'll enter into this leaf loop. Now what I need to do if something goes wrong I have to stay back in the same page.

What is that page EMP form? So I am just going to give return EMP form. Just understand the logic you are moving from EMP form to add employee. Okay, so if something goes wrong, it has to stay back in EMP form dot JSP only if everything is perfect, proceed for To EMP success dot JSP. Now let me save this. Let me run the application interesting for all the three year type conversion error occurs, let me click Add employees it is staying back in the same page.

It is because of the year. If you want to still check on this, what it can do, we can just try to get whatever errors have occurred. It is result dot file errors. Let me save this. I'll go back and I will refresh that string add employee. I'll open this console.

Here you can see the error part. Can you see this. So with binding results, you can get them you can capture the validation errors and make the user steps stay back on the same page only. So this is about model attribute and binding result. Thank you

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.