我在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";
}
}
在页面上加载我在网页上显示成功的属性。我试图让我的头围绕弹簧mvc下面的按钮点击是我的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”更改为“更改”这个词,我不确定我做错了什么。
答案 0 :(得分:8)
你的问题不是Spring,而是HTML。您无法提交按钮。您只能提交<form>
。
将<input>
元素换成<form>
<form action="<c:url value="/test" />" method="GET">
<input type="submit" name="action" value="save" />
</form>
其中<c:url>
是url
taglib的core
标记。现在,当您单击该按钮时,浏览器会将您的<input>
元素序列化为url编码的表单参数并发送它们。它们将作为服务器/ Web应用程序的请求参数出现。 Spring将按名称反序列化它们,并将它们作为参数注入,其中有@RequestParam
方法参数。
答案 1 :(得分:1)
需要有一个封装输入的表单。
一般情况:您的“保存”和“续订”用例应该是单独的控制器操作。
另请考虑从您的操作名称中删除“POST”。看到动作是用GET修饰的,而html正在说它的GET