非常简单的弹簧MVC按钮点击



我的SampleController中有以下代码;

@Controller
public class SampleController {
    @RequestMapping("home")
    public String loadHomePage(Model m) {
        m.addAttribute("name", "CodeTutr");
        return "home";
    }
    @RequestMapping(value="/test", method=RequestMethod.GET)
    public String handlePost(@RequestParam String action, Model m) {
        if( action.equals("save") ){
            //handle save
         }
         else if( action.equals("renew") ){
            //handle renew
         }
        m.addAttribute("name", "change");
        return "home";
    }
}

页面加载属性我设置它成功显示在网页上。我正试着在springmvc上点击按钮。下面是我的jsp代码;

<!DOCTYPE HTML>
<html>
  <head>
    <title>Sample Application</title>
  </head>
  <body>
    <h1>Hello, ${name}!</h1>
    <input type="submit" name="action" value="save" />
  </body>
</html>

我的输入没有任何作用,handlePost方法永远不会被命中。我试图将属性"name"更改为单词"change",我不确定我做错了什么。

问题不在于Spring,而在于HTML。您无法提交按钮。您只能提交<form>

<input>元素包裹在<form>

<form action="<c:url value="/test" />" method="GET">
    <input type="submit" name="action" value="save" />
</form>

其中,<c:url>core标签库的url标签。现在,当您单击该按钮时,浏览器将把<input>元素序列化为url编码的表单参数并发送它们。它们将作为请求参数显示在您的服务器/web应用程序中。Spring将按名称反序列化它们,并在有@RequestParam方法参数的地方将它们作为参数注入。

需要一个表单来封装您的输入。

仅供参考:您的"保存"one_answers"续订"用例应该是单独的控制器操作。

还要考虑从操作名称中删除"POST"。看到这个动作是用GET装饰的,而html正在说它的GET

最新更新