2015-02-10 72 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