Question: How validator plug-in is performing server side form validation in our Struts-apps (explain flow)
- Form page submits the request to struts applications
- ActionServlet traps and takes the request and also reads the form data of form page
- ActionServlet writes formdata to form bean class properties of form bean class object by calling setxxx () method
- ActionServlet calls validate () method of our form bean class object since it is not available the super class validate () method will be execute
- This super class validate () method activator plug-in (validate form class)
- This validator plug-in uses the entries of validation.xml file to know the validator rules that are applied on form bean properties.
- Validator plug-in performs form validation on form bean properties data
Validation errors are there No-Validation errors
- Super class validate (-,-) returns Super class validate (-,-) returns Action-Errors
- Action-Error class object with elements (size>0) class object without elements (size = 0).
ActionServlet forward the control to input.jsp program to display validation error messages.
When <arg> tag is used with validator rule name then that <arg> tag supplies argument value of only that validator rule related error message.
- <field properties = “password” depends = “required, maxlength”>
- <arg position = “0” name = “required” key = “my.pass”/> -> Supplies {0} valiue for required rule related form validation error messages.
- <arg position = “0” name = “maxlength” key = “my.pass1”/> -> Supplies {0} valiue for maxlength rule related form validation error messages.
- —————-
- —————–
- </field>
When <arg> tag is used without validator rule name then that tag can supply argument value for multiple values rule form validation error messages.
Example:-
- <field properties = “password” depends = “required,maxlength”>
- <arg position = “0” key = “my.pass”/>
- ————-
- ————-
- </field>
In the above code my.pass supplies {0} value for required, maxlength validator rules related error messages.
- Code in validation.xml to apply required, maxlength validation rules on password form bean property.
In validation.xml
- <field property = “password” depends = “reauired, maxlength”>
- <arg position = “0” name = “required” key = “my.pass”/>
- <arg position = “0” name = “maxlength” key = “my.pass1”/>
- <arg position = “1” name = “maxlength” key = “$ {var: maxlength}” resource = “false”/>
- <var>
- <var-name> maxlength </var-name>
- <var-value> 10 </var-value>
- </var>
- </field>
- If you have not liked the default error msg of validator rules then we can configure user defined messages as form validation error messages by using <msg> tag in validation.xml file. In this situation if any other than {0} value is required for validator rules as input values then they must be supplied by using <arg> tag.