我正在使用Spring 3.在我的jsp中我有一个表单
<form action='componentAction.html' method='POST'>
<input type='hidden' id='action_' name='componentAction' value=""/>
</form>
表单操作的值更改为“开始”,“停止”或“暂停”。
我还有3个按钮:开始,停止和暂停。按下其中一个按钮后,表单的值会发生变化。
<input type="button" value="Start" onclick="changeFormValueAndSubmit('start')">
<input type="button" value="Stop" onclick="changeFormValueAndSubmit('stop')">
<input type="button" value="Pause" onclick="changeFormValueAndSubmit('pause')">
我希望能够在新闻发布后通过ajax调用将表单的值发送给我的控制器。
有人可以告诉我正确的做法吗? Alsos我应该使用POST还是GET?
我尝试过如下教程
http://www.raistudies.com/spring/spring-mvc/ajax-spring-mvc-3-annonations-jquery/
http://hmkcode.com/spring-mvc-json-json-to-java/
http://java.dzone.com/articles/using-spring-mvc%E2%80%99s
但我悲惨地失败了。
感谢任何人提前发出的声音!
答案 0 :(得分:1)
使用JQuery,您可以在changeFormValueAndSubmit()函数中使用以下内容
function changeFormValueAndSubmit(buttonName) {
var formData = $('form').serialize();
jQuery.post('/path', formData, function(d) {
// handle response
});
...
}
注意:在此示例中,jquery将在表单中发送所有数据字段。
让你在JSP中包含jquery框架,并在spring中使用一个控制器方法来处理POST。
POST优于GET。
在服务器端使用Spring 3注释,类似
@Controller
public class ExampleController {
@ResponseBody
@RequestMapping(value = "/path", method=RequestMethod.POST)
public String post(@RequestParam String componentAction) {
// do work
...
return "OK"; // depends on what you need to send back...
}
}
您必须启用MVC注释。见http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-annotation-driven
答案 1 :(得分:0)
POST或GET将确定表单数据是以URL(GET)编码发送还是嵌入在http请求消息正文(POST)中。由于它是一个ajax调用,URL不会直接显示给用户,但无论哪种方式,用户都可以在浏览器的开发人员工具下看到请求的内容。
让弹簧将流量引导到jsp的最简单方法是:
<servlet-mapping>
<servlet-name>MyJSPServlet</servlet-name>
<url-pattern>/urlFromOutside</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyJSPServlet</servlet-name>
<jsp-file>/pathToJspFile/MyJspFile.jsp</jsp-file>
</servlet>
要获取表单数据,在jsp文件中,您可以访问请求对象,并可以获取如下参数:
<%= request.getParameter("componentAction") %>