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

Spring MVC Form Checkbox
Spring MVC Form Checkbox 1
Spring MVC Form Checkbox 2
Spring MVC Form Checkbox 3