2017-05-12 7 views
0

AJAXリクエストでフォームのデータをDBに追加します。変更が発生するページを呼び出すコントローラは、フォーム、データがそこから私は(ページ上で、後に動的に)DBに入力したいがあるページで「イベント」パラメータ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; 
} 

を受け入れます

<%@ 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エラーによって壊れています。どうすればこの問題を解決できますか?

答えて

0

ボタンのタイプを「ボタン」に変更します。

タイプが「送信」の場合、アクションはページを再読み込みするフォームを送信しようとします。

「ボタン」タイプを使用すると、アクションはcall()機能に委任されます。

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

ありがとう、このようなニュアンスが問題を解決しました;) –

関連する問題