我正在开发一个应用程序,我在其中使用spring framework 3.1.1和rest api。在其中我已经开发了一个休息控制器,它将在接收URL“/ rest / host / {id}”的“GET”请求时将控件重定向到我的视图(表单)。现在,在用户填写表单后,还会使用rest来处理发布的数据。但在我编写的处理post请求的方法中,我在一个字符串中获取所有参数,我想要解析并插入到数据库中。任何人都能说出解析这个弹簧数据的正确方法是什么?我可以使用String.split(“&”)来做到这一点,但我不认为这是正确的方法。这是我的代码。
<form:form method="POST" action="/nagios-sms-1.0/rest/snooze/host/" commandName="snoozeBean">
<table width="100%" border="5" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<table width="50%" border="5">
<tr>
<td colspan="3"></td>
</tr>
<tr>
<td width="30%"><form:label path="contactNumber">Enter host address</form:label></td>
<td width="30%"><form:input path="contactNumber" /></td>
<td />
</tr>
<tr>
<td width="30%"><form:label path="snoozeTimeoutValue">Enter Snooze time</form:label></td>
<td width="30%"><form:input path="snoozeTimeoutValue" /></td>
<td />
</tr>
<tr>
<td colspan="3">
<div id="buttons"
style="margin-left: 20Px; margin-right: 100px;">
<input type="submit" value="ok" /> <input type="reset" />
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
REST代码..
1)GET处理程序方法
@RequestMapping(value = "/host/{hostId}", method = RequestMethod.GET)
public String snoozeHost(@PathVariable int hostId, ModelMap map) {
Snooze snooze = new Snooze();
snooze.setHost_id(hostId);
map.put("snoozeBean", snooze);
return "host";
}
2)POST处理程序方法
@RequestMapping(value = "/host", method = RequestMethod.POST)
@ResponseBody
public String snoozeHostOK(@RequestBody String payload) {
// i want to parse this payload data which contains my form fields.
System.out.println("data : " + payload);
return payload;
}
任何形式的帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
您可以使用@ModelAttribute而不是请求主体,并在表单的帖子上由Spring Framework填充的一个pojo(贪睡)中获取所有表单数据绑定。
你需要在你的get和post请求映射方法中声明snooze为@ModelAttribute。这样您就可以从表单中获取所有值。
<强>更新强>
在此处查看修改后的代码。
GET处理程序方法
@RequestMapping(value = "/host/{hostId}", method = RequestMethod.GET)
public String snoozeHost(@PathVariable int hostId, @ModelAttribute Snooze snooze, ModelMap map) {
snooze.setHost_id(hostId);
return "host";
}
POST处理程序方法
@RequestMapping(value = "/host", method = RequestMethod.POST)
@ResponseBody
public String snoozeHostOK(@ModelAttribute Snooze snooze) {
// you can use the setter methods of snooze object to retrieve the field values.
return payload;
}
希望这会对你有所帮助。欢呼声。