2012-06-14 182 views
2

是否可以在没有刷新的情况下在SPRING MVC 3中提交表单?无刷新提交表单(SPRING MVC 3)

我想要的是将数据以SPRING形式存储到java object/POJO。

这里是我的map.jsp

<form:form action="" method="post" commandName="userQuery">  
    <form:input path="startLocation" id ="startLocation" /> 
<input type="submit" value="Search" onclick="codeAddress()"> 

<script type="text/javascript"> 
    function codeAddress(){ 
     var address = document.getElementById("startLocation").value;     
     geocoder.geocode({ 'address': address, 'partialmatch' : true }, geoCodeResults);     
</script> 

我想的数据(即startLocation)存储Java对象,在同一时间使用的是JavaScript的数据,所以我可以显示谷歌地图并在该位置显示标记。但我每次提交表单时,它刷新页面,于是,该标记不呈现,因为它重新加载整个页面,包括地图

这里是我的Controller.java

@RequestMapping(value= "/map" , method = RequestMethod.GET) 
public ModelAndView showMap(){ 
    ModelAndView mav = new ModelAndView("home/map"); 
    Query query = new Query(); 
    mav.getModel().put("userQuery", query);     
    return mav;   
} 

    @RequestMapping(value="/map", method = RequestMethod.POST) 
public ModelAndView createMap(@ModelAttribute("userQuery") Query query){     
    ModelAndView mav = new ModelAndView("home/map");   
    List<Query> q = new ArrayList<Query>();   
    q.add(new Query(query.getStartLocation()));       
    mav.addObject("q", q);   
    return mav;   
} 

我需要存储startLocation。请帮忙。除了SPRING表单之外,还有其他方法可以存储用户输入吗?

回答

1

你在做什么很好。但是你只是缺少的一件事是从Java脚本函数中'返回false'。因为你正在从表单提交按钮调用该函数,所以在成功处理你的ajax请求之后,它也会提交表单。所以你需要停止。

希望这可以帮助你。干杯。

2

我会看看使用jQuery JavaScript库与jQuery form插件。它使用AJAX发布表单(即不重新加载整个页面)更容易。

1

我想下面的代码将帮助您

拨打以下事件JavaScript方法,当你想更新开始位置 addStartLocation方法需要在你的情况,而不是提交按钮点击被称为“codeAddress()”方法

var xmlHttp; 
      function addStartLocation(){ 
       if (typeof XMLHttpRequest != "undefined"){ 
        xmlHttp= new XMLHttpRequest(); 
       } 
       else if (window.ActiveXObject){ 
        xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       if (xmlHttp==null){ 
        alert("Browser does not support XMLHTTP Request") 
        return; 
       } 
       var url="/project/updateStartLocation"; 
       url +="?location=" +document.getElementById("location").value; 
       xmlHttp.onreadystatechange = displayMap; 
       xmlHttp.open("GET", url, true); 
       xmlHttp.send(null); 
      } 

function displayMap() { 
// Here you can right geocode to display map 
} 

然后在Spring MVC控制器处理这样

@RequestMapping(value = "/updateStartLocation", method = RequestMethod.GET) 
    public @ResponseBody String updateStartLocation(@RequestParam(value = "location", required = true) String location, Model model) { 
     //Perform your logic to update Start Location 
     return location; 
    } 
这个请求