Spring MVC Form Checkbox
Spring MVC provides several form tags used to develop web applications (Usually JSP pages). One of them is a checkbox tag. The checkbox tag offers us to choose multiple options at the same time.
Below is given a code snippet which shows how to use the <form:checkbox> tag:
Dancing <form:checkbox path = "hobbies" value = "Dancing" /> Singing <form:checkbox path = "hobbies" value = "Singing" />
The <form:checkbox> tag is used to create an HTML checkbox field in which the values are hard-coded inside the JSP pages, whereas the <form:checkboxes> tag is used to create multiple checkboxes in which the checkbox values are generated at run time. The <fom:checkboxes> tag is only used when we don’t want to list down the elements in the JSP page.
Below is given a code snippet, which shows how to use the <form:checkboxes> tag:
<form:checkboxes path = "hobbies" items = "${student.list}" />
Example of MVC Form Checkbox
Here, we are going to create an example of <form:checkbox>.
Following are the steps to create an example of <form:checkbox> tag:
- Create a request page
In this step, we are going to create a request page named index.jsp.
index.jsp
<html> <body> <h2> Spring MVC Web application </h2> <a href = "student_form"> Student Form </a> </body> </html>
- Create the Model class which stores data
In this step, we are going to create a Model class named Student.java, which stores the checkbox values.
Student.java
import java.util.LinkedHashMap; public class Student { private String fname; private String lname; private String country; private LinkedHashMap<String, String> countryoptions; private String planguage; private String[] hobbies; public Student() { countryoptions = new LinkedHashMap<String, String>(); countryoptions.put("IND","India"); countryoptions.put("FRA","France"); countryoptions.put("USA","America"); countryoptions.put("DUB","Dubai"); countryoptions.put("NEP", "Nepal"); countryoptions.put("BHU", "Bhutan"); countryoptions.put("UK", "United Kingdom"); } public String getCountry() { return country; } public LinkedHashMap<String, String> getCountryoptions() { return countryoptions; } public void setCountry(String country) { this.country = country; } public String getFname() { return fname; } public void setFname(String fname) { this.fname = fname; } public String getLname() { return lname; } public void setLname(String lname) { this.lname = lname; } public String getPlanguage() { return planguage; } public void setPlanguage(String planguage) { this.planguage = planguage; } public String[] getHobbies() { return hobbies; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } }
- Create the Controller class
In this step, we are going to create a Controller named StudentController.java.
StudentController.java
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class StudentController { @RequestMapping("/student_form") public String showStudentForm( Model m) { Student student = new Student(); m.addAttribute("student", student); return "studentform" ; } @RequestMapping("/studentregis") public String showStudentData(@ModelAttribute("student") Student student) { return "student-data" ; } }
- Add the entry of Controller in the web.xml
In this step, we are going to add the entry of the Controller inside the web.xml.
web.xml
<?xml version = "1.0" encoding = "UTF-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "WebApp_ID" version = "3.1"> <display-name>spring-mvc-demo</display-name> <absolute-ordering /> <!-- Spring MVC Configs --> <!-- Step 1: Configure Spring MVC Dispatcher Servlet --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
- Define the Model class in another XML file
In this step, we are going to define the bean in another XML file (spring-servlet.xml).
spring-servlet.xml
<?xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:context = "http://www.springframework.org/schema/context" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- Step 3: Add support for component scanning --> <context:component-scan base-package = "com.app.SpringMVCFormTag" /> <!-- Step 4: Add support for conversion, formatting and validation support --> <mvc:annotation-driven/> <!-- Step 5: Define Spring MVC view resolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/view/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans>
- Create all the view pages
In this step, we are going to create the other view pages (JSP pages).
studentform.jsp
<%@ taglib prefix = "form" uri = "http://www.springframework.org/tags/form" %> <html> <head> <title>Student Registration Form </title> </head> <body> <form:form action = "studentregis" modelAttribute = "student" > FIRST NAME: <form:input path = "fname" /> <br></br> LAST NAME: <form:input path = "lname" /> <br></br> COUNTRY: <form:select path="country"> <form:options items = "${student.countryoptions}"></form:options> </form:select> <br></br> PROGRAMMING LANGUAGE: <br></br> Java <form:radiobutton path = "planguage" value = "Java" /> Python <form:radiobutton path = "planguage" value = "Python" /> C++ <form:radiobutton path = "planguage" value = "C++" /> PHP <form:radiobutton path = "planguage" value = "PHP" /> <br></br> HOBBIES: <br></br> Dancing <form:checkbox path = "hobbies" value = "Dancing" /> Singing <form:checkbox path = "hobbies" value = "Singing" /> Travelling <form:checkbox path = "hobbies" value = "Travelling"/> Reading <form:checkbox path = "hobbies" value = "Reading" /> <br></br> <input type = "submit" value = "Submit"/> </form:form> </body> </html>
student-data.jsp
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <title>Student Registration Data</title> </head> <body> The student name is ${student.fname} ${student.lname} <br></br> Country: ${student.country} <br></br> Programming Language: ${student.planguage} <br></br> Hobbies: <ul> <c:forEach var = "temp" items ="${student.hobbies}"> <li> ${temp} </li> </c:forEach> </ul> </body> </html>
Output