Solved

Spring MVC 3.0 - form submits to two different methods in same Controller

Posted on 2010-09-15
7
999 Views
Last Modified: 2013-11-11
Is it actually possible for a form to submit to two different methods in the same controller using spring mvc 3.0 ?

I have a form
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
      <title>Spring 3 MVC Series - Contact Manager</title>
      <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h2>Contact Manager</h2>
<form:form method="post" action="addContact">

      <table>
      
      <tr>
            <td><form:label path="firstname">First Name</form:label></td>
            <td><form:input path="firstname" /></td>
      </tr>
      <tr>
            <td><form:label path="lastname">Last Name</form:label></td>
            <td><form:input path="lastname" /></td>
      </tr>
      <tr>
            <td><form:label path="lastname">Email</form:label></td>
            <td><form:input path="email" /></td>
      </tr>
      <tr>
            <td><form:label path="lastname">Telephone</form:label></td>
            <td><form:input path="telephone" /></td>
      </tr>
      <tr>
            <td colspan="2"><input type="submit" value="Add"/></td>
<td colspan="2"><input type="submit" value="Search"/></td>
      </tr>
      
</table>

As you see there is a add button and a search button.  I want the add go to the addContact method and serach go to the showResults method in the controller.  
The controller code is attached  
@Controller

@SessionAttributes

public class ContactController {

	

	public static final String SEARCH_RESULTS_NAME 	= "ContactSearchResults";



	@RequestMapping(value = "/addContact", method = RequestMethod.POST)

	public String addContact(@ModelAttribute("contact")

							Contact contact, BindingResult result,

							HttpServletRequest request, HttpServletResponse response) {



		System.out.println("First Name:" + contact.getFirstname() +

					"Last Name:" + contact.getLastname());

		

		return "redirect:contacts.html";

	}

	@RequestMapping("/contacts")

	public ModelAndView showContacts() {



		return new ModelAndView("contact", "command", new Contact());

	}

}

Open in new window

0
Comment
Question by:lotrzz
  • 4
  • 3
7 Comments
 
LVL 92

Expert Comment

by:objects
ID: 33688833
try giving the input a name

<input type="submit" name="add" value="Add"/>

@RequestMapping(value = "/addContact", params = "add", method = RequestMethod.POST)
0
 

Author Comment

by:lotrzz
ID: 33689049
org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/SpringMVC/contacts.html] in DispatcherServlet with name 'spring'

when I am trying to add the second button ( there are two buttons name="add"  name="search"
0
 
LVL 92

Expert Comment

by:objects
ID: 33689084
> /SpringMVC/contacts.html]

your path is wrong, you don't have anything mapped to /contacts.html
0
Superior storage. Superior surveillance.

WD Purple drives are built for 24/7, always-on, high-definition security systems. With support for up to 8 hard drives and 32 cameras, WD Purple drives are optimized for surveillance.

 

Author Comment

by:lotrzz
ID: 33689144
What is the correct path?  That looks like the path I have in my servlet
0
 
LVL 92

Accepted Solution

by:
objects earned 100 total points
ID: 33689159
What servlet?

>      @RequestMapping("/contacts")
>      public ModelAndView showContacts() {

showContents() is mapped to /contacts
0
 

Author Comment

by:lotrzz
ID: 33689185
Sorry I meant Controller(not servlet).  The code to the controller is attached and my contact.jsp has two buttons  
<td colspan="2">
<input type="submit" name="add" value="Add Contact"/><br>
<input type="submit" name="search" value="Search"/>
</td>


@Controller

@SessionAttributes

public class ContactController {



	@RequestMapping(value = "/addContact", params="add", method = RequestMethod.POST)

	public String addContact(@ModelAttribute("contact")

							Contact contact, BindingResult result) {



		System.out.println("First Name:" + contact.getFirstname() +

					"Last Name:" + contact.getLastname());



		return "redirect:contacts.html";

	}



	@RequestMapping(value="/addContact", params="search")

	public ModelAndView showContacts() {

		System.out.println("i m here");

		return new ModelAndView("contact", "command", new Contact());

	}

}

Open in new window

0
 

Author Closing Comment

by:lotrzz
ID: 33689244
showContacts was also responsible for loading the page, and that mapping was wrong. Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
fetching the full url inside controller 2 39
countX 22 81
json format text only 4 75
Setting strict transport security header in header not working 1 78
Hi,      I've been learning Spring and Jersey for the past few months and to say in simple, i am pretty much impressed with these frameworks. Many developers feel it awkward to implement a RESTful Web Services with such a popular Web Application Fr…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
The viewer will learn how to implement Singleton Design Pattern in Java.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now