Spring 3,将数据从jsp传递给控制器

时间:2013-07-26 15:56:39

标签: java ajax spring jquery spring-mvc

我正在使用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
但我悲惨地失败了。

感谢任何人提前发出的声音!

2 个答案:

答案 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") %>