Spring MVC Multiple Checkbox Example

Hey guys in this post, you will learn about reading the checkbox values in Spring MVC with easy to understand example

Read More:


  • In Spring MVC is represented by the tag <form:checkbox />
  • If you want to read radio button values from java model then we can use <form:checkboxes />
<form:checkbox path="departments" value="Sales" />Sales

Complete Example

Lets create a step by step maven project to understand the Spring MVC

Create a maven project

First you need to create a maven webapp project. You can check the below post to create new maven webapp project –

  • Create a maven webapp project

Add Maven Dependencies

Open pom.xml and add the following maven dependencies

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<name>springmvc Maven Webapp</name>

Configure Spring MVC App

Create AppConfig.java class inside in.bushansirgur.springmvc.config package and add the following content

package in.bushansirgur.springmvc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@ComponentScan(basePackages = "in.bushansirgur.springmvc")
public class AppConfig {
	//define the bean for view resolver
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		return viewResolver;

Configure Dispatcher Servlet

Create MySpringMvcDispatcherServletInitializer.java inside in.bushansirgur.springmvc.config package and add the following content

package in.bushansirgur.springmvc.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class MySpringMvcDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	protected Class<?>[] getRootConfigClasses() {
		return null;

	protected Class<?>[] getServletConfigClasses() {
		return new Class[] {AppConfig.class};

	protected String[] getServletMappings() {
		return new String[] {"/"};


Create a Java model

Inside src/main/java create a package in.bushansirgur.springmvc.model, under this create Employee.java and add the following content

package in.bushansirgur.springmvc.model;

import java.util.LinkedHashMap;

public class Employee {
	private String firstName;
	private String lastName;
	private String country;
	private LinkedHashMap<String, String> countryOptions;

	private LinkedHashMap<String, String> genderOptions;
	private String gender;
	private String[] departments;
	public Employee() {
		//populate country options
		countryOptions = new LinkedHashMap<String, String>();
		countryOptions.put("IND", "India");
		countryOptions.put("AUS", "Australia");
		countryOptions.put("GER", "Germany");
		countryOptions.put("CAN", "Canada");
		countryOptions.put("SAF", "South Africa");
		//populate gender options
		genderOptions = new LinkedHashMap<String, String>();
		genderOptions.put("Male", "Male");
		genderOptions.put("Female", "Female");
	public String getFirstName() {
		return firstName;

	public void setFirstName(String firstName) {
		this.firstName = firstName;

	public String getLastName() {
		return lastName;

	public void setLastName(String lastName) {
		this.lastName = lastName;

	public String getCountry() {
		return country;

	public void setCountry(String country) {
		this.country = country;

	public LinkedHashMap<String, String> getCountryOptions() {
		return countryOptions;

	public void setCountryOptions(LinkedHashMap<String, String> countryOptions) {
		this.countryOptions = countryOptions;

	public String getGender() {
		return gender;

	public void setGender(String gender) {
		this.gender = gender;

	public LinkedHashMap<String, String> getGenderOptions() {
		return genderOptions;

	public void setGenderOptions(LinkedHashMap<String, String> genderOptions) {
		this.genderOptions = genderOptions;

	public String[] getDepartments() {
		return departments;

	public void setDepartments(String[] departments) {
		this.departments = departments;

Create a Controller

Inside src/main/java create a package in.bushansirgur.springmvc.controller, under this create HomeController.java and add the following content

package in.bushansirgur.springmvc.controller;

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 in.bushansirgur.springmvc.model.Employee;

public class HomeController {
	@RequestMapping(value = "/")
	public String showHomePage(Model theModel) {
		theModel.addAttribute("employee", new Employee());
		return "home-page";
	@RequestMapping(value = "/processForm")
	public String showDashboardPage(@ModelAttribute("employee") Employee theEmployee, Model theModel) {
		theModel.addAttribute("employee", theEmployee);
		return "dashboard";

@ModelAttribute annotation will bind the form values to the Java object.

Create a view template

Create home-page.jsp inside webapp/WEB-INF/view folder and add the following content

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
	<h1>Read the textbox value</h1>
	<form:form action="processForm" modelAttribute="employee">
		First Name:<form:input path="firstName" /><br/><br/>
		Last Name: <form:input path="lastName" /><br/><br/>
		Country: <form:select path="country">
			<form:options items="${employee.countryOptions}" />
		<form:radiobuttons path="gender" items="${employee.genderOptions}" />
		<form:checkbox path="departments" value="Sales" /> Sales
		<form:checkbox path="departments" value="Marketing" /> Marketing
		<form:checkbox path="departments" value="IT" /> IT
		<form:checkbox path="departments" value="Admin" /> Admin
		<form:checkbox path="departments" value="HR" /> HR
		<button type="submit">Submit</button>

model attribute in the <form:form> tag takes the name of the model which we added to the Model object in handler method.

Create dashboard.jsp inside webapp/WEB-INF/view folder and add the following content

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
	<h1>Read the textbox value</h1>
	<p>Employee First name: ${employee.firstName}</p>
	<p>Employee Last name: ${employee.lastName}</p>
	<p>Employee country: ${employee.country}</p>
	<p>Employee Gender: ${employee.gender}</p>
	<p>Employee Department: </p>
		<c:forEach var="department" items="${employee.departments}">

Run the App

Start the tomcat server, navigate to the URL localhost:8080/springmvc/


That’s it for this post, if you like this post, share this with your friends and colleagues or you can share this within your social media platform. Thanks, I will see you in our next post.

Bushan Sirgur

Hey guys, I am Bushan Sirgur from Banglore, India. Currently, I am working as an Associate project in an IT company.

Leave a Reply