728x90

개요.

스프링에 대한 이해가 현저이 떨어질때, 혹은 자바에 대한 기본이해가 많지 않아 발생시킨 버그다(...)


상황.

리스트의 날짜 검색부분에서 검색버튼을 클릭하면 결과는 목록에 표시가 되는데, 내가 검색했던 날짜값이 없어진다.


원인.

뷰에서 컨트롤러안으로 리퀘스트를 받아오는 VO가 있었다. (이 VO를 A_VO라 하겠다.)

이 A_VO는 검색한 결과값을 가지고 다니다가 목록에 표시할 작업이 완료되면 그 값을 다시 A_VO에 담아 뷰페이지에 리스폰스를 하는 역활이다.

이 컨트롤러에 새로운 기능을 추가해야 해서 리턴값이 A_VO형태인 새로운 메소드를 만들었다.

그리고 나는 A_VO에 그 새로운 메소드의 결과값을 덮어씌워버렸다.(...)

이게 말로는 설명이 조금 애매하고... 예를 들어서 소스를 코딩하자면,

 
 @RequestMapping("/dir1/mappingTxt.do")
 public mappingTxt(HttpServletRequest request, @ModelAttribute("searchVO") A_VO a_VO,ModelMap model) throws Exception {
    //exMethod의 리턴형이 A_VO형이어서 그냥 파라메터로 들어온 a_VO에 넣어버렸다..
    a_VO = exService.exMethod();

    //그리고 그것을 다시 모델에 담아 뷰페이지로 보냈다.(...)
    model.addAttribute("searchVO", a_VO);

    return "dir/mappingTxt";
 }

이런식으로 작업을 해버린것이다.


해결.

이는 아래의 방법으로 버그를 처리했다.

 
 @RequestMapping("/dir1/mappingTxt.do")
 public mappingTxt(HttpServletRequest request, @ModelAttribute("searchVO") A_VO a_VO,ModelMap model) throws Exception {
    //새로이 A_VO형 객체 a_VO2에 exMethod메소드의 결과를 담았다.
    A_VO a_VO2 = exService.exMethod();

    //그리고 a_VO2의 get메소드로 결과데이터를 가져와서 파라메터 a_VO객체의 set메소드로 데이터를 넣어주었다.
    a_VO.setParameter(a_VO2.getParameter());

    model.addAttribute("searchVO", a_VO);
    return "dir/mappingTxt";
 }





728x90

+ Recent posts