자바마스터
74
2018-09-17 10:10:33
9
2341

ajax와 스프링으로 게시판 업데이트 질문입니다...


안녕하십니까 제가 지금 스프링으로 게시판 공부중인데 도저히 해결이 안되서 질문 드립니다.

제가 지금 게시판 수정을 하고 있는데 구글링하면서 해봐도 해결이 잘 안되더라구요 그래서 여기서

한번 도움요청하고 싶습니다.

                            jsonObj.title = $("#title").val();
                            jsonObj.writer = $("#writer").val();
                            jsonObj.content = $("#content").val();
                            jsonObj.num = ${num};


                            $.ajax({
                                url: "/update.do",
                                type: "post",
                                data: JSON.stringify(jsonObj),
                                //dataType:"json",
                                success: function (result)
                                {
                                    alert("check");
                                    alert("title - " + jsonObj.title);
                                    alert("writer - " + jsonObj.writer);
                                    alert("content - " + jsonObj.content);
                                    alert("num2 - " + jsonObj.num);

                                },
                                error: function (error, status, request)
                                {
                                    alert("fail");
                                    alert("error ->" + error);
                                    alert("status ->" + status);
                                    alert("request ->" + request);
                                }
                            });

제가 여기까지 제목 작성자 내용 내용이 추출되는것까지 확인을 했습니다. 


컨트롤러

    @RequestMapping(value = "/update.do")
    public String update(@RequestBody Map<String, Object> param)
    {


        int test = boardService.updateService(param);


        System.out.println("===================수정완료===================");
        System.out.println(test);
        System.out.println("=============================================");

        return "test";
    }

근데 컨트롤러에서 확인을 해보면 다 null값으로 들어가 있더라구요

ServiceImpl

    //수정
    @Override
    public int updateService(Map<String, Object> param)
    {
        return boardDAO.update(param);
    }


DAO

    //글 수정
    @Override
    public int update(Map<String, Object> param)
    {
        return session.update("board.modify",param);
    }


mapper


    <!-- 수정 -->
    <update id="modify" parameterType="map">
        UPDATE WEB_BOARD
            SET SUBJECT = #{title},
                CONTENT = #{content},
                REGUSER = #{writer},
                MODIFYUSER = #{writer},
                MODIFYDATE = GETDATE()
        WHERE BOARDNO = #{num}
    </update>

혹시 제가 어떤 실수를 했는지 알려 주실수 있나요...

0
  • 답변 9

  • 자바마스터
    74
    2018-09-17 10:14:19

    그리고 컨트롤러를 이런식으로 해봐도 잘안되더라구요....

    @ResponseBody   
    @RequestMapping(value = "/update.do")
        public String update(@RequestBody Map<String, Object> param)
        {
    
    
            int test = boardService.updateService(param);
    
    
            System.out.println("===================수정완료===================");
            System.out.println(test);
            System.out.println("=============================================");
    
            return "test";
        }
  • Obzect
    2k
    2018-09-17 10:15:52


    alert(JSON.stringify(jsonObj))

    이거찍었을때 title=aaa&writer=admin 이런식으로 나오는지 확인하시구요


    디버그 모드로 돌려서 controller에서 Map안에 어떤값이 들어가 있는지 확인하시면 될듯

  • 벨제부브
    2k
    2018-09-17 10:19:06

    1.어디까지 값이 들어가있나 확인 

    2.문제를 확인했으면 오타가있는지확인하고 ajax니 Gson이나 @ResponseBody를이용해서

    json형태로넘기는지확인

    3.그후 값을 찍어서 들어가나 확인


  • 자바마스터
    74
    2018-09-17 10:25:12

    Obzect 님 말씀대로 해봤는데


    alert으로 찍어보니 


    말씀대로 그렇게 잘 나옵니다 근데


    디버그 찍어보니 size가 0이라고 나오더라구요 왜 controller가 못 받는지 알려주실 수 있나요?


  • 자바마스터
    74
    2018-09-17 10:26:46

    벨제부브

    조언 감사합니다. 다시 한번 확인해보겠습니다.

  • 벨제부브
    2k
    2018-09-17 10:34:01

    일단 기존에 썼던 값은 갖고와지는데

    ajax에서 컨트롤러로 못넘기고계신건가요?

    저같은경우는 주로이렇게합니다



    var data = {"boardId" : ${board.BOARDID},"title" : $("#replyTitle").val(),"contents":$('#replyContents').val()};
    					
    					$.ajax({
    						url : "/board/registerRep",
    						type : 'POST',
    						dataType : "json",
    						data : data,
    						success : function(data) {
    							alert("성공");


    var data를 에이젝스 data : data <--이거랑 일치시키고 success에 data가 가도록해서 통일시켜서

    값을 주고받고합니다



  • 자바마스터
    74
    2018-09-17 10:49:02

    벨제부브님이 알려주신대로 해봤습니다.


    알려주신것도 ajax로 보내고 alert(JSON.stringify(data)) 으로 찍어보니 값이 잘 찍힙니다.


    근데 이것도 컨트롤러에서 받지 못하고 똑같이 널값이 나옵니다.......


    제가 컨트롤러에서 실수를 한거 같아요...

  • 자바마스터
    74
    2018-09-17 11:00:05

    벨제부브님 문제가 해결 되었습니다.


    controller에서 데이터 받는 형식이 잘못 되어서 값이 안받아 지는거였습니다


    알려주신 방법대로 ajax 로 보내고 controller를 이런식으로 수정 했더니 성공했습니다!

        @RequestMapping(value = "/update.do")
        @ResponseBody
        public String update(@RequestParam(value = "title") String title,
                             @RequestParam(value = "writer") String writer,
                             @RequestParam(value = "content") String content,
                             @RequestParam(value = "num") String num){
    
    
            Map<String, Object> param = new HashMap<String, Object>();
    
            param.put("title", title);
            param.put("writer", writer);
            param.put("content", content);
            param.put("num", num);
    
    
            int test = boardService.updateService(param);
    
            System.out.println("===================수정완료===================");
            System.out.println(title);
            System.out.println(writer);
            System.out.println(content);
            System.out.println(num);
            System.out.println("=============================================");
    
            return "test";
        }


  • 벨제부브
    2k
    2018-09-17 11:05:15
  • 로그인을 하시면 답변을 등록할 수 있습니다.