아이해브퀘스천
70
2021-03-21 12:06:01 작성 2021-03-21 12:15:40 수정됨
6
192

스프링 4.2(전자정부3.7) json관련 controller에서 jsp로 값을 return을 못하네요


현상 :

1.controller에서 jsp로 값 return이 안됩니다.

2. alert화면에 계속 undefine이 표출됩니다.

(로그를 통해 jsp에서 -> controller호출하는 것은 확인)

서비스를 list<>로 받고나서 리턴할때 문제같은데.. 

검색중인데 해결이 어렵네요 

문제점 부탁드립니다.


1. controller

function reset(){

var user = {id:'홍길동' , pw:'1234', idx:${boardVO.idx}};  

var data = JSON.stringify(user);

    $.ajax({

        url:"<c:url value='/mgmtajax.do'/>",

        type:"post",

        data: data,

        contentType: "application/json",

        success: function(data) {

            alert("통신성공[0]:" + data[0].value);

            alert("통신성공[1]:" + data[1].value);

        },

        error: function() {

            alert("통신실패");

        }

    })

        }



2. controller

@RequestMapping(value = "/mgmtajax.do")

@ResponseBody

public String mgmtajax(@RequestBody BoardVO getUserVO, HttpServletRequest request, ModelMap model) throws Exception {

Set<String> keySet = request.getParameterMap().keySet();

for(String key: keySet) {

System.out.println("login 모든 파라미터 출력"+key + ": " + request.getParameter(key));

}

  List<?> listjson = boardService.selectReplyList(getUserVO);

  ModelAndView mav = new ModelAndView("listjson");

  mav.addObject("listjson", listjson);

  

  /*return "jsonview";*/

  return "mav";

}

0
  • 답변 6

  • humorist
    148
    2021-03-21 12:18:02

    return에 jsonview로 쓰실거면 설정xml에 jsonview를 사용한다는 뷰리졸버 설정이있는지 보셔야하구요

    그게 아니면


    public ModelAndView mgmtajax(@RequestBody BoardVO getUserVO, HttpServletRequest request, ModelMap model) throws Exception {

    Set<String> keySet = request.getParameterMap().keySet();

    for(String key: keySet) {

    System.out.println("login 모든 파라미터 출력"+key + ": " + request.getParameter(key));

    }

      List<?> listjson = boardService.selectReplyList(getUserVO);

      ModelAndView mav = new ModelAndView("listjson");

      mav.addObject("listjson", listjson);

      return mav;

    }

    로 변경해보세요 return이 String이라 ajax 타도 문자열 "mav"가 리턴될겁니다.

  • yeori
    2k
    2021-03-21 12:32:14

    success 에서 아래와 같이 alert을 출력해보면..

      success: function(data) {
        console.log(data);
        alert(data);
      }
    

    문자열 'mav'가 출력될거 같습니다.

  • 아이해브퀘스천
    70
    2021-03-21 12:41:54 작성 2021-03-21 12:42:51 수정됨

    답변 감사드립니다.

    return형을 ModelAndView로 하면은 에러가발생합니다. (f2누르면 return을 String으로 권장)

    참고로 아래와 같이 하면은(예제) 리턴이 잘 되네요.(원하는 건 service단을 리턴하고 싶어서요)

      Map outputJSON = new HashMap();

      outputJSON.put("key", "Value 1 ");

     return "outputJSON "





  • 아이해브퀘스천
    70
    2021-03-21 12:44:47

    네 그렇습니다..

    success 에서 아래와 같이 alert을 출력해보면..

    max가 alert에 표출됩니다.

      success: function(data) {
        console.log(data);
        alert(data);
      }
  • 아이해브퀘스천
    70
    2021-03-21 14:38:53

    아 return   return "mav" ->  return mav; 수정하니

    통신실패가 발생하네요..


    public ModelAndView mgmtajax(@RequestBody BoardVO getUserVO, HttpServletRequest request, ModelMap model) throws Exception {

    Set<String> keySet = request.getParameterMap().keySet();

    for(String key: keySet) {

    System.out.println("login 모든 파라미터 출력"+key + ": " + request.getParameter(key));

    }

      List<?> listjson = boardService.selectReplyList(getUserVO);

      ModelAndView mav = new ModelAndView("listjson");

      mav.addObject("listjson", listjson);

      return mav;

    }

  • humorist
    148
    2021-03-21 15:27:15

    public String mgmtajax(@RequestBody BoardVO getUserVO, HttpServletRequest request, ModelMap model) throws Exception {

    Set<String> keySet = request.getParameterMap().keySet();

    for(String key: keySet) {

    System.out.println("login 모든 파라미터 출력"+key + ": " + request.getParameter(key));

    }

      List<?> listjson = boardService.selectReplyList(getUserVO);

      modelMap.addAttribute("listjson", listjson);

      return "outputJSON";

    }


    viewResolver에 outputJSON로 설정되어있는거같네요 

    위에 코드처럼 modelMap에 넣으시고 

    리턴해보세요



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