• Java
    • JAXB Tutorial
      • What is JAXB
      • JAXB Marshalling Example
      • JAXB UnMarshalling Example
  • Spring Tutorial
    • Spring Core Tutorial
    • Spring MVC Tutorial
      • Quick Start
        • Flow Diagram
        • Hello World Example
        • Form Handling Example
      • Handler Mapping
        • BeanNameUrlHandlerMapping
        • ControllerClassNameHandlerMapping
        • SimpleUrlHandlerMapping
      • Validation & Exception Handling
        • Validation+Annotations
        • Validation+ResourceBundle
        • @ExceptionHandler
        • @ControllerAdvice
        • Custom Exception Handling
      • Form Tag Library
        • Textbox Example
        • TextArea Example
        • Password Example
        • Dropdown Box Example
        • Checkboxes Example
        • Radiobuttons Example
        • HiddenValue Example
      • Misc
        • Change Config file name
    • Spring Boot Tutorial
  • Hibernate Tutorial
  • REST Tutorial
    • JAX-RS REST @PathParam Example
    • JAX-RS REST @QueryParam Example
    • JAX-RS REST @DefaultValue Example
    • JAX-RS REST @Context Example
    • JAX-RS REST @MatrixParam Example
    • JAX-RS REST @FormParam Example
    • JAX-RS REST @Produces Example
    • JAX-RS REST @Consumes Example
    • JAX-RS REST @Produces both XML and JSON Example
    • JAX-RS REST @Consumes both XML and JSON Example
  • Miscellaneous
    • JSON Parser
      • Read a JSON file
      • Write JSON object to File
      • Read / Write JSON using GSON
      • Java Object to JSON using JAXB
    • CSV Parser
      • Read / Write CSV file
      • Read/Parse/Write CSV File – OpenCSV
      • Export data into a CSV File
      • CsvToBean and BeanToCsv – OpenCSV

JavaInterviewPoint

Java Development Tutorials

Spring MVC Multiple submit buttons in a single form

April 29, 2015 by javainterviewpoint 9 Comments

Recently I came across a situation where in which I needed to have two submit buttons in a Single Spring MVC form and have separate action mapped to each of them. Previously we had been using the below approach in my application.

 <form action="dosomething">
     <input type='submit' name='action' value='action1' />
    <input type='submit' name='action' value='action2' />
 </form>

The controller part looks like

public class Controller
{
	public String doSomething()
	{
		String action= request.getParameter("action");
		if(action == "action1") 
		{
			dosomething
		}
		else if(action == "action2") 
		{
			do something else
		}
	}
}

Now here comes the question how to achieve the same in Spring MVC. We will have to use an attribute called as params in the @RequestMapping to get the value of the button
Spring MVC Form

<input type = "submit" name = "action1" />
<input type = "submit" name = "action2" />

Spring Controller

@RequestMapping(params = "action1")
public ModelAndView action1(...) 

@RequestMapping(params = "action2")
public ModelAndView action2(....)

Let’s look into the complete example

Folder Structure :

  1. Create a Dynamic Web Project “SpringMVCMultipleSubmitButton” and create a package for our src files “com.javainterviewpoint“
  2. Place the Spring 3 jar files under WEB-INF/Lib 

    commons-logging-1.1.1.jar
    log4j-1.2.16.jar
    slf4j-api-1.7.5.jar
    slf4j-log4j12-1.7.5.jar
    spring-aspects-3.2.4.RELEASE.jar
    spring-beans-3.2.4.RELEASE.jar
    spring-context-3.2.4.RELEASE.jar
    spring-core-3.2.4.RELEASE.jar
    spring-expression-3.2.4.RELEASE.jar
    spring-web-3.2.4.RELEASE.jar
    spring-webmvc-3.2.4.RELEASE.jar

  3. Create the Java classes SpringMVCController.java under  com.javainterviewpoint folder.
  4. Place the SpringConfig-servlet.xml and web.xml  under the WEB-INF directory
  5. View files welcome.jsp are put under the sub directory under WEB-INF/Jsp

welcome.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
 <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
   <form:form action="processForm" method="post">
     <input type = "submit" name = "action1" value="Action1"/>
     <input type = "submit" name = "action2" value="Action2"/> 
   </form:form>
</body>
</html>

our welcome page has nothing but two submit buttons with names assigned as “action1” and “action2”

SpringMVCController.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class SpringMVCController 
{
    @RequestMapping("/showForm")
    public String showForm()
    {
        return "welcome";
    }
    @RequestMapping(value="/processForm",params="action1",method=RequestMethod.POST)
    public void action1()
    {
        System.out.println("Action1 block called");
    }
    @RequestMapping(value="/processForm",params="action2",method=RequestMethod.POST)
    public void action2()
    {
        System.out.println("Action2 block called");
    }
}

Our controller class has the RequestMapping corresponding to the action from the form “processForm” and param attribute which corresponds to the name of the each button. so when 1st button is clicked action1() method will be called and when 2nd button is clicked action2() method will be called.
web.xml

The web.xml has everything about the application that a server needs to know, which is placed under the WEB-INF directory. <servlet-name> contains the name of the SpringConfiguration , when the DispatcherServlet is initialized the framework will try to load a configuration file “[servlet-name]-servlet.xml” under the WEB-INF directory.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee	
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>SpringMVCFormHandling</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>SpringConfig</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringConfig</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

SpringConfig-servlet.xml

The SpringConfig-servlet.xml is also placed under the WEB-INF directory.

  • <context:component-scan> will let the Spring Container to search for all the annotation under the package “com.javainteriviewpoint”.
  • <mvc:annotation-driven/> annotation will activate the @Controller, @RequestMapping, @Valid etc annotations.
  • The view is resolved through “org.springframework.web.servlet.view.InternalResourceViewResolver” which searches for the jsp files under the /WEB-INF/Jsp/ directory.
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" http://www.springframework.org/schema/beans	
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd	
http://www.springframework.org/schema/context	
http://www.springframework.org/schema/context/spring-context-3.0.xsd	
http://www.springframework.org/schema/mvc	
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
 
    <mvc:annotation-driven/>
 
    <context:component-scan base-package="com.javainterviewpoint"></context:component-scan>
 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/Jsp/"></property>
        <property name="suffix" value=".jsp"></property>
     </bean>
 </beans>

Output

URL : http://localhost:8080/SpringMVCMultipleSubmitButton/processForm

when 1st button is clicked,action1() method is called

Action1 block called

when 2nd button is clicked,action2() method is called

Action2 block called

Other interesting articles which you may like …

  • Spring 3 MVC Hello World Example
  • Spring MVC Form Validation Tutorial (With Annotations)
  • Spring MVC Form Validation -Annotations and ResourceBundle
  • Spring MVC Exception Handling @ExceptionHandler
  • Spring MVC Exception Handling @ControllerAdvice and @ExceptionHandler
  • Spring MVC Custom Exception Handling
  • Spring MVC Textbox Example
  • Spring MVC Password Example
  • Spring MVC Dropdown Box Example
  • Spring MVC Checkbox And Checkboxes Example
  • Spring MVC Radiobutton And Radiobuttons Example
  • Spring MVC TextArea Example
  • Spring MVC HiddenValue Example
  • context:annotation-config vs context:component-scan
  • Spring MVC BeanNameUrlHandlerMapping Example
  • Spring MVC ControllerClassNameHandlerMapping Example
  • Spring MVC SimpleUrlHandlerMapping Example
  • Spring MVC Flow Diagram

Filed Under: J2EE, Java, Spring, Spring MVC, Spring Tutorial Tagged With: Multiple submit buttons, single form, Spring MVC

Comments

  1. Clayton says

    August 21, 2015 at 5:40 pm

    Thank you, it was helpfull!!!

    Reply
  2. kishore says

    October 20, 2015 at 11:41 pm

    Very helpful! Thanks

    Reply
  3. Jorge says

    November 12, 2015 at 9:05 pm

    Excellent. Quite simple, for brain-dead programmers llike me. Thank you very much!

    Reply
  4. vahid says

    November 30, 2015 at 3:09 pm

    Thanks buddy,it was helpful 🙂

    Reply
  5. raghava says

    November 29, 2016 at 4:57 pm

    very useful. thanks

    Reply
  6. ljuba says

    November 17, 2017 at 2:13 am

    Thank you very cool.

    Reply
  7. mista269 says

    November 28, 2017 at 4:15 pm

    Thank you for sharing this useful knowledge

    Reply
  8. Mehdi says

    January 5, 2018 at 12:32 pm

    Very Useful

    Reply
  9. Chakradhar says

    February 10, 2018 at 5:50 pm

    Thank you very much for sharing your good knowledge, if you do not post this, lot of time get wasted for me, it is useful

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Java Basics

  • JVM Architecture
  • Object in Java
  • Class in Java
  • How to Set Classpath for Java in Windows
  • Components of JDK
  • Decompiling a class file
  • Use of Class.forName in java
  • Use Class.forName in SQL JDBC

Oops Concepts

  • Inheritance in Java
  • Types of Inheritance in Java
  • Single Inheritance in Java
  • Multiple Inheritance in Java
  • Multilevel Inheritance in Java
  • Hierarchical Inheritance in Java
  • Hybrid Inheritance in Java
  • Polymorphism in Java – Method Overloading and Overriding
  • Types of Polymorphism in java
  • Method Overriding in Java
  • Can we Overload static methods in Java
  • Can we Override static methods in Java
  • Java Constructor Overloading
  • Java Method Overloading Example
  • Encapsulation in Java with Example
  • Constructor in Java
  • Constructor in an Interface?
  • Parameterized Constructor in Java
  • Constructor Chaining with example
  • What is the use of a Private Constructors in Java
  • Interface in Java
  • What is Marker Interface
  • Abstract Class in Java

Java Keywords

  • Java this keyword
  • Java super keyword
  • Final Keyword in Java
  • static Keyword in Java
  • Static Import
  • Transient Keyword

Miscellaneous

  • newInstance() method
  • How does Hashmap works internally in Java
  • Java Ternary operator
  • How System.out.println() really work?
  • Autoboxing and Unboxing Examples
  • Serialization and Deserialization in Java with Example
  • Generate SerialVersionUID in Java
  • How to make a class Immutable in Java
  • Differences betwen HashMap and Hashtable
  • Difference between Enumeration and Iterator ?
  • Difference between fail-fast and fail-safe Iterator
  • Difference Between Interface and Abstract Class in Java
  • Difference between equals() and ==
  • Sort Objects in a ArrayList using Java Comparable Interface
  • Sort Objects in a ArrayList using Java Comparator

Follow

  • Coding Utils

Useful Links

  • Spring 4.1.x Documentation
  • Spring 3.2.x Documentation
  • Spring 2.5.x Documentation
  • Java 6 API
  • Java 7 API
  • Java 8 API
  • Java EE 5 Tutorial
  • Java EE 6 Tutorial
  • Java EE 7 Tutorial
  • Maven Repository
  • Hibernate ORM

About JavaInterviewPoint

javainterviewpoint.com is a tech blog dedicated to all Java/J2EE developers and Web Developers. We publish useful tutorials on Java, J2EE and all latest frameworks.

All examples and tutorials posted here are very well tested in our development environment.

Connect with us on Facebook | Privacy Policy | Sitemap

Copyright ©2023 · Java Interview Point - All Rights Are Reserved ·