체블러
195
2021-04-12 15:03:09
1
135

스프링부트 ModelAndView 리턴 관련해서 궁금한점이 있습니다.


회사 들어온지 얼마 안되는 신입입니다. 지금 관리자페이지를 만들고 있는데


컨트롤러와 페이지별 매핑 주소 연결을 끝냈는데

연결하는걸 ModelAndView 방식으로 했습니다. 예를 들자면




@RequestMapping("/jsonTest")
@ResponseBody()
public ModelAndView JSONTest() {
    ModelAndView model = new ModelAndView("/jsonTest");

    ArrayList<OriginVo> originVo = new ArrayList<OriginVo>();
    ArrayList<OriginTranslationVo> originTranslationVo = new ArrayList<OriginTranslationVo>();


    originVo.add(0, new OriginVo("원본값1", "00:00:01"));
    originVo.add(1, new OriginVo("원본값2", "00:00:02"));

    originTranslationVo.add(0, new OriginTranslationVo("번역값1","번역1","한국어1"));
    originTranslationVo.add(1, new OriginTranslationVo("번역값2","번역2","영어2"));

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("origin", originVo);
    jsonObject.put("translation", originTranslationVo);


    model.addObject("json", jsonObject);
    model.addObject("originList", captionVo);
    return model;
}


아직 db가 없는 상황이라 임의로 데이터를 넣었고

localhost/jsonTest를 통해서 들어가면


넘겨준 값들을 사용할 수 있게 만들고 있는데

제가 컨트롤러단을 맡아서하고 다른분이 jsp쪽을 맡으시는데


json형식으로 값을 전달해주는게 가장 좋다고 하시거든요?

기존에 다른 api들은


@ResponseBody
    public Object getTest(@RequestBody final JSONObject param) {
        String type =  (String)param.get("type");

        return new ResultDTO(1, MultiLanguageMsgType.내용_없음, testService.getTest(type));
    }


이런식으로 param을 받아서 db에서 가져와서 object로 리턴해주는식인데

ModelAndView를 쓰면서 json을 넘기려고 하다보니



 JSONObject jsonObject = new JSONObject();
    jsonObject.put("origin", originVo);
    jsonObject.put("translation", originTranslationVo);


    model.addObject("json", jsonObject);


이런식으로 jsonObject에 put으로 넣고

model에 addObject로 넣어서 전달해줘도 맞게 전달하는걸까요?


저 혼자 테스트중이다보니 jsp쪽에서는

넘겨준 값을


${json} 이나

${json.getJSONArray('origin')} 아니면

${json.getJSONArray('origin').get(0)} 이런식으로 쓰면 될거라고 생각은 하는데


맞는방식인지 아니면 json타입으로 넘겨주려면 다른방식을 써야하는지가 궁금하네요


구글링해서 jsonView? 이것도 찾아봤는데 setVIewName에 jsonView를 넣으면 jsp는 어떻게 보여주는지

잘 모르겠더라구요


혹시 아시는분 있으시면 조언해주십사하고 글 올려봅니다

0
  • 답변 1

  • 컴포지트
    2k
    2021-04-12 16:01:48

    혹시 자바에서 생성할 JSON 구조를 JSP 등의 뷰로 보내면서 ${json} 이런 식으로 스크립트에 전달해 스크립트에서 써먹을 목적이세요?

    그럼 잘못 쓴 겁니다.

    만약 JSON 구조를 스크립트에서 쓰려면, 먼저 .toString() 메소드로 문자열로 변환하여 Model 에 넣고,

    스크립트에서는 아래와 같이 수동으로 JSON 변환해서 써야 합니다.

    예) var myjson = JSON.parse('${json}');

    또한 뷰 페이지에서 JSON 컨트롤 메소드는 쓰지 않는 걸 추천합니다. 서비스나 컨트롤에서 해결한 뒤 모델에 넣어서 해결하시길.

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