如何将param从jsp传递给spring mvc controller

时间:2015-08-03 14:51:45

标签: java spring jsp spring-mvc

我的spring mvc控制器有一个方法:

    @RequestMapping(value = "/search", method = RequestMethod.POST)
    public ModelAndView search(@RequestParam("cn") String cn) {
    //do stuff
    return mav;
}

我有一个JSP页面,我想发送字符串cn的值:

<html>
 <head><title>Search Entry</title></head>
 <body>
  <h3>Search entry</h3>
  <a href="search"><input type="text" name="cn" value="search">
   <button type="submit">Search</button>
  </a>
  </body>
</html>

我确定jsp有问题,现在状态信息显示:

“不支持请求方法'GET'。”

如果我删除method = RequestMethod.POST,它会说:

“必需字符串参数'cn'不存在;描述:客户端发送的请求在语法上不正确”

3 个答案:

答案 0 :(得分:3)

我可以看到你正在使用Spring注释,所以你需要做的是修改你的JSP以获得一个表单而不是像这样的链接:

<html>
<head><title>Search Entry</title></head>
<body>
<h3>Search entry</h3>
<form action="search" method="post">
    <input type="text" name="cn" value="search">
    <button type="submit">Search</button>
</form>
</body>
</html>

如果你想要一个GET方法工作,你需要修改你的控制器的方法来接受GET并像这样改变你的JSP:

<html>
<head><title>Search Entry</title></head>
<body>
<h3>Search entry</h3>
  <a href="search?cn=search">
     Search
  </a>
</body>
</html>

如果您希望参数不是必需的,可以像这样修改@RequestParam注释:

@RequestParam(value = "cn", required = false) String cn

答案 1 :(得分:0)

您需要在表单标记内定义action="search"应该可以正常工作

答案 2 :(得分:-2)

更改您的HTML:

<html>
<head><title>Search Entry</title></head>
<body>
<h3>Search entry</h3>
<a href="search"><input type="text" name="cn" value="search" action="search">
 <button type="submit">Search</button>
</a>
</body>
 </html>

或者点击此链接: