2015-02-10 71 views
2

我最初尝试在Spring控制器上使用Spring表单标签和Validation来提交表单数据。由于我不得不更新JSP页面中的div,我不认为我可以使用这种技术。所以我正在尝试使用AJAX调用。以下是我迄今为止使用Spring的AJAX调用形式

主要由JSP页面(main.jsp中)

<div id="header">...</div> 
<div id="content"> 
    <div id="info1">....</info"> 
    <div id="info2"> 
    <%@ include file="/WEB-INF/jsp/myForm.jsp" %> 
    </div> 
    <div id="info3">...</div> 
    ... 
</div> 
<div id="footer">...</div> 

JSP页面(myForm.jsp)

<form:form action="/postFormData.htm" commandName="myEntryForm"> 
    //All inputs using <form:input> tags 
</form:form> 

Spring MVC的控制器

的代码片段
@RequestMapping(value = "/telephone/sendMemberEntryEmail.htm", method = RequestMethod.POST) 
public ModelAndView doSomeWork(Model model, @Valid MyEntryForm myEntryForm, BindingResult result) { 
    if(result.hasErrors()) { 
     return new ModelAndView("myForm", "myEntryForm", myEntryForm); 
    } 
    return new ModelAndView("successPage"); 
} 

所以我在这里试图发送响应(错误或成功)到div命名info2。我正面临的问题是,因为我正在使用操作,它正在更新整个主页和响应。

因此,我正在考虑做AJAX调用,但我不知道如何收集表单数据并发送给控制器。我无法发送每个字段作为参数,因为我有许多字段和相关字段的集合。我想使用MyEntryForm对象发送ti。

请建议。

+1

尝试使用form.serialize()并参阅。您的控制器也必须更改以返回数据而不是MAV。查看@ResponseBody注释以返回数据。 – minion 2015-02-10 20:39:09

回答

1

试试这个

  $("#myEntryForm").submit(function(e){ 
       $.ajax({ 
        url: 'your form action url', 
        type: 'post', 
        data:$(this).serialize(), 
        success: function() { 
         alert('success'); 
        } 
       })   
      }); 

在你的控制器,你应该使用@ResponseBody。

+0

是的,我想出了那部分。现在接下来的问题是我如何在控制器中映射'结果'到JSp – 2015-02-11 13:05:34

+1

您需要处理ajax成功时控制器的响应并处理它。这里是可以回答你的问题的帖子,http://stackoverflow.com/questions/23267113/how-to-return-object-from-controller-to-ajax-in-spring-mvc – 2015-02-12 10:29:08