I'm trying to make a simple Spring MVC application.
Here's my HelloController
package com.springapp.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap model,@RequestParam(value = "xx",required
=true)String xx) {
model.addAttribute("message", "Hello Mahdi");
return "hello";
}
}
and the JSP file:
<html>
<body>
<h1>${message}</h1>
<form action="/" method="GET">
<input type="text" name="xx">
<button type="submit">submit</button>
</form>
</body>
</html>
I'm getting the following error when I try to run the application:
HTTP Status 400 - Required String parameter 'xx' is not present
I'm new to Spring MVC, please help.
Your use case requires two actions:
<form>
<form>
This should be mapped to two handler methods
@RequestMapping(method = RequestMethod.GET)
public String getForm() {
model.addAttribute("message", "Hello Mahdi");
return "hello"; // assume hello.jsp
}
@RequestMapping(params={"submit"}, method = RequestMethod.GET)
public String printWelcome(ModelMap model, @RequestParam(value = "xx",required=true) String xx) {
/*
Do something with submitted parameter
and return some view name
*/
}
When you want to access the form, you make a GET to /
. When you submit the form, you can also do a GET to /
, but you would need something else to distinguish the request. Here, I've used params="submit"
. So you need to change your submit input to
<input type="submit" name="submit">submit</button>
or just put the parameter you're already using (params={"xx"}
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With