명환
170
2021-03-29 09:10:01 작성 2021-03-29 09:55:22 수정됨
15
317

ajax로 값넘길때 dto로 받을려고 하는데 에러납니다~



이벤트버튼의 이름은 insertEmployee

클릭이벤트 주고

밑에 에이작스에 {key:value}값 해서 값 넣어 준다음에

controller에서 dto값으로 받아 오려고 하는데 값이 안받아와 집니다

에이작스로 보내기전에는 값 출력했을땐 값이 넣어 지는걸로 나오구요

저장 버튼 누르면 

404 에러 뜹니다 경로 복붙해서 맞는거 같은데 이거 왜이럴까요? 도와주세요~

// 이젠 경로로 가긴하는데 dto에 받아오는값이 null값이 나옵니다~

//추가로 formData값으로 묶어서 보내봤는데도 null 값이 나옵니다..




0
  • 답변 15

  • WRITE_IN_DART✎
    2021-03-29 09:17:32
    슬래쉬 빠진거 아닌가염..
  • 명환
    170
    2021-03-29 09:29:49
    @RequestMapping쪽 말씀하시는 걸까요? 넣어도 404 에러 나요..
  • ajax부분에서는 type이 post라 명시되었는데
    @RequestMapping에는 누락된 것 같습니다.
    method=RequestMethod.POST
    넣어보셨나요?
  • 명환
    170
    2021-03-29 10:01:28

    넵 그것도 방금 넣어 봣는데 null값 나와요 ..


  • 연습용더미1
    518
    2021-03-29 10:16:22 작성 2021-03-29 10:18:26 수정됨

    전체 주소가 제대로 매핑이 되어있는지 알 수가 없네요.


    dataType:"json" 넣어보세요

  • 명환
    170
    2021-03-29 10:41:18

    dataType:"json" 넣어도 null 값이 나와요..



  • 이핫
    178
    2021-03-29 11:13:49 작성 2021-03-29 11:17:16 수정됨

    컨트롤러쪽 선언되어있는거 봐야지 알거 같은데요

    JSON으로 보내시면 dto 뒤에 @RequestBody 넣어보세요.

    @RequestBody InsaDTO dto 이런식으로요.


  • 명환
    170
    2021-03-29 11:21:08

    선언부는 이렇게 했습니다. 말씀하신대로 @RequestBody 넣엇더니


    404 에러 떠요..

  • 이핫
    178
    2021-03-29 12:42:46

    지금 본문부터 쭉 보는데 계속 뭐 바뀌고 뭐 바뀌고 하는게 보는 입장에서 정리가 안되서 알려드리기가 어렵네요...

    일단

    ajax 호출 부분

    data 부분 구조

    컨트롤러

    이렇게 현재 상태에서 수정하지 말고 올려줘보세요...


    ajax에서 JSON으로 올렸다면 @RequestBody에 VO 맵핑해야 되는게 맞습니다.

    formdata로 올리셨으면 그냥 VO로 받으시면 되고요.

    ajax 호출 전에 console.log로 data도 한번 찍어보시고요.

  • 명환
    170
    2021-03-29 13:00:53

    inserEmployee 버튼 눌러서 이벤트 호출

    이벤트 호출시 데이터 값 name값으로 저장.

    ajax로 데이터값 {key:value}형식으로 보냄.

    controller에서 받아서 확인. 지금은 404에러 뜹니다. 아까는 null값 넘어왔다가

    값 확인해보면

    이렇게 나와요 지금 좀 여러가지가 뒤죽박죽된거 같아요..


  • 이핫
    178
    2021-03-29 13:11:49

    일단 404 자체가 지금 이해가 안되는 상황이긴한데요....


    produces가 일단 리턴타입 지정이라고 알고있긴한데 일단은 빼고 돌려보세요...


    일단 혹시 모르니...

    ajax 쪽 url은  ${pageContext.request.contextPath}/insertEmployee 이거로 바꿔보시구요...


    ajax 호출에 이 두개 추가하시고요...

    dataType: "json",

    contentType :"application/json; charset=utf-8",


    data 부분은 JSON.stringify으로 한번 감싸시구요

    data : JSON.stringify( {key.value 구조} ) 


    이렇게 수정해서 서버랑 화면 콘솔 한번 찍어주세요.

  • 명환
    170
    2021-03-29 13:27:59


    콘솔 부분

    Controller에 도착 sysout 해놧는데 도착 하지않고 에러 바꼇어요..

  • 이핫
    178
    2021-03-29 13:37:21 작성 2021-03-29 13:38:43 수정됨

    흐음... /빼고 ${pageContext.request.contextPath}로 줘보시겠어요...?


    그래도 에러나면 ${pageContext.request.contextPath} 이부분 아예 빼고 해보셔도 됩니다..


    404 원인을 몰라서 혹시 톰캣에 contextpath 잡혀있는지 해서 넣어둔거라...

  • 명환
    170
    2021-03-29 13:46:33

    아예빼니깐

    이렇게 뜨네요..

  • 이핫
    178
    2021-03-29 13:49:24 작성 2021-03-29 13:53:38 수정됨

    요청시 GET메서드를 지원하지 않는다는건데..

    뭔가 다른 곳에서 서버요청이 실행되나 본데요...

    ajax타는게 아니라...


    화면에서 GET메서드로 요청이 올라왔다는 건데... 이부분은 캡처 올라온 부분엔 없어서 확인해보셔야 될거 같아요...

  • 로그인을 하시면 답변을 등록할 수 있습니다.