0

我正在使用 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 调用将表单的值发送到我的控制器。

有人可以告诉我正确的做法吗?另外我应该使用 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
但我失败得很惨。

提前感谢任何人的帮助!

4

2 回答 2

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

于 2013-07-26T16:44:13.993 回答
0

POST 或 GET 将确定表单数据是以 URL 编码 (GET) 还是嵌入在 http 请求消息正文 (POST) 中发送的。由于是ajax调用,URL不会直接显示给用户,但不管怎样,用户都可以在浏览器的开发者工具下看到请求的内容。

让 spring 将流量引导到您的 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") %>
于 2013-07-26T16:50:32.217 回答