2017-05-12 46 views
0

我想用AJAX请求将表单中的数据添加到数据库中。调用上发生变化的页面控制器接受“事件”参数ajax请求时没有找到参数

@RequestMapping(value = "/event") 
public ModelAndView event(HttpServletRequest request, HttpSession session) 
{ 
    ModelAndView modelAndView = new ModelAndView(); 
    SimpleUser simpleUser = simpleUserService.findById((Integer) session.getAttribute("userId")); 
    Profile profile = simpleUser.getProfile(); 
    modelAndView.addObject("nameOfEventOwner", profile.getName()); 
    modelAndView.addObject("surnameOfEventOwner", profile.getSecondName()); 

    int id = Integer.parseInt(request.getParameter("event")); 
    System.out.println(id); 

    modelAndView.addObject("event", eventService.findById(id)); 
    modelAndView.setViewName("eventpage"); 
    return modelAndView; 
} 

在页面上有一个表单,数据从中我想进入DB(后动态页面上)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%-- 
Created by IntelliJ IDEA. 
User: Yura 
Date: 10.05.2017 
Time: 15:30 
To change this template use File | Settings | File Templates. 
--%> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <script src="<c:url value="/resources/jquery-3.2.1.min.js" />"></script> 
    <script> 
    function call() { 
     var comment = $("#comment").val(); 
     var rate = $("#rate").val(); 

     $.ajax({ 
      url : "/addcomment", 
      method : 'GET', 
      data : { 
       comment : comment, 
       rate : rate, 
       idEvent: ${event.getId()}, 
       idAuthor: ${sessionScope.simpleUser.getId()} 
      }, 
      dataType: "html", 
      success : function(results){ 
       alert("add"); 
      } 
     }); 
    }; 
</script> 
<title>Title</title> 
</head> 
<body> 
    owner: ${nameOfEventOwner} ${surnameOfEventOwner} 
    <br>${event.getNameOfEvent()} <pre> ${event.getDateOfEvent()}}</pre> 
    <br> ${event.getDescription()} 
    <br> ${event.getTag()} 
    <br> 
    <form> 
     Commentary: <input type="text" id="comment" placeholder="text"> 
     Rating: <input type="text" id="rate" placeholder="rating"> 
     <button type="submit" id="button" onclick="call()">Add commentary</button> 
    </form> 
</body> 
</html> 

我想通过AJAX将这些值传递给控制器​​。但是当我传递这些值时,我的页面被重新加载,并且我被NumberFormatExseption错误破坏,因为'event'参数没有被初始化。我怎么解决这个问题?

回答

0

将按钮的类型更改为“按钮”。

当类型为“提交”时,该操作将尝试提交表单重新加载页面。

使用“按钮”类型,您只需将操作委派给call()函数。

<button type="button" id="button" onclick="call()">Add commentary</button> 
+0

谢谢,这样的细微差别解决了这个问题;) –