Java 提交表单而不刷新(SPRING MVC 3)

Java 提交表单而不刷新(SPRING MVC 3),java,javascript,forms,spring,spring-mvc,Java,Javascript,Forms,Spring,Spring Mvc,是否可以在SpringMVC3中提交表单而不刷新 我想要的是以SPRING格式将数据存储到javaobject/POJO。 @RequestMapping(value= "/map" , method = RequestMethod.GET) public ModelAndView showMap(){ ModelAndView mav = new ModelAndView("home/map"); Query query = new Query(); mav.getMo

是否可以在SpringMVC3中提交表单而不刷新

我想要的是以SPRING格式将数据存储到javaobject/POJO。

@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;        
}
这是我的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>

函数代码地址(){
var address=document.getElementById(“startLocation”).value;
geocoder.geocode({'address':address,'partialmatch':true},geoCodeResults);
我正在尝试存储数据(即,存储位置)对于java对象,同时将该数据用于javascript,这样我就可以显示google地图并在该位置显示标记。但每次提交表单时,它都会刷新页面,因此标记不会呈现,因为它会重新加载包括地图在内的整个页面

这是我的控制器。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;        
}
@RequestMapping(value=“/map”,method=RequestMethod.GET)
公共模型和视图显示地图(){
ModelAndView mav=新的ModelAndView(“主页/地图”);
查询=新查询();
mav.getModel().put(“userQuery”,query);
返回mav;
}
@RequestMapping(value=“/map”,method=RequestMethod.POST)
公共ModelAndView createMap(@ModelAttribute(“userQuery”)查询查询){
ModelAndView mav=新的ModelAndView(“主页/地图”);
列表q=新的ArrayList();
q、 添加(新查询(Query.getStartLocation());
mav.addObject(“q”,q);
返回mav;
}

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

您正在做的很好。但是您缺少的一件事是java脚本函数的“return false”。因为您是从表单su调用该函数的bmit按钮,成功处理ajax请求后,它也将提交表单。因此,您需要停止该操作


希望这对您有所帮助。干杯。

您所做的一切都很好。但您缺少的只是java脚本函数中的“return false”。因为您是从表单提交按钮调用该函数的,所以在成功处理ajax请求后,它也会提交表单。因此您需要停止该操作


希望这对您有所帮助。干杯。

我将考虑将javascript库与jQuery插件一起使用。它使使用AJAX发布表单(即不重新加载整个页面)变得更加容易。

我将考虑将javascript库与jQuery插件一起使用。它使使用AJAX发布表单变得更加容易(即无需重新加载整个页面)简单得多。

我认为下面的代码将对您有所帮助

当您想要更新开始位置时,在事件上调用下面的javascript方法 在您的案例中,需要在提交按钮单击时调用addStartLocation方法,而不是“codeAddress()”方法

然后在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;
    }

我认为下面的代码将帮助您

当您想要更新开始位置时,在事件上调用下面的javascript方法 在您的案例中,需要在提交按钮单击时调用addStartLocation方法,而不是“codeAddress()”方法

然后在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;
    }