KyungHwan's etc.

스프링프레임워크 - 뷰(View) 에서 JSTL태그를 이용하여 컨트롤러(Controller)에서 넘긴 모델(Model) 값 받기 본문

Java/스프링프레임워크

스프링프레임워크 - 뷰(View) 에서 JSTL태그를 이용하여 컨트롤러(Controller)에서 넘긴 모델(Model) 값 받기

KyungHwan_0 2018. 6. 22. 11:37

뷰(View) 에서 JSTL태그를 이용하여 컨트롤러(Controller)에서 넘긴 모델(Model) 값 받기

컨트롤러에서 넘긴 모델값을 뷰상으로 전달하는 방법이 많은데, 간편하게 컨트롤러에 데이터를 받아올때 수월한 JSTL태그를 사용하여 받을수 있다.

Controller

@RequestMapping("/main")
public String main(Model model ,HttpSession session , @RequestBody String paramData)throws ParseException{

IDao dao = sqlSession.getMapper(IDao.class);
ArrayList<ContentDto> list = dao.showlist2(logininfo);
   model.addAttribute("list", dao.showlist2(logininfo));
return "main";
 
  }

모델에 "list" 라는 이름으로 Mybatis를 이용하여 쿼리결과를 담았다.

View

    <c:forEach items="${list}" var="dto"> </div>
   <div class='feed mbot-10'>
   <div class='section phor-16'>
   <div class='face flex-embed'></div>
   <div class='name'>글번호:${dto.num}</div>
   <div class='name'>작성자:${dto.ID}</div>
   <div class='desc'>${dto.JSONOBJ}</div>
   <div class='gogogo'><a href="delete?num=${dto.num}">삭제</a></div>
   <div class='gogogo'><a href="wwritereupdate?num=${dto.num}">수정</a></div>
   <div class='desc'></div>
   </div>
   </c:forEach>  

 items = "${리스트가 받아올 배열이름}". var = "for문 내부에서 사용할 변수".

View상에서 "list" 데이터를 가져와 "dto" 변수로 지정하고, 사용하여 결과를 뿌려준다. 보통 DTO을 이용하여 쿼리문결과를 가져올때가 많은데 JSTL태그를 이용하여 수월하게 가져올수있다.

JSTL태그를 이용하여 자바스크립트로 결과를 받아올수도 있다.

컨트롤러에서 모델은 request에 값을 가지고 있어, 모델에 있는 값을 받을려면 페이지 전환이되어야 그값을 받아올수가 있다.

하지만, AJAX 요청 같은 경우 페이지 전환 없이 같은페이지에서 받는 것이기 때문에, 컨트롤러에서 모델값에 넣어서 넘겨주면 안되고, return 값에 넣어 다음과 같이 View에 넘겨줘야 한다.

@RequestMapping("/getBeaconOfTour")
public @ResponseBody List<Beacon> getgetBeaconOfTour(long tourId){
   List<Beacon> list = tourAdminService.getBeconOfTour(tourId);
   System.out.println("이름:"+list,get(0).getBeaconName());
   return list;
 
}

AJAX에 요청이 있는경우, 컨트롤러에서 return 값으로 쿼리결과를 담은 List를 이용하여 View로 넘긴다.

$("#tourId").change(function()){
    alert($("#tourID").val());
       $.post("/getBeaconOfTour" , {"#tourId": $("#tourId").val()}, function(result){
   
         for(var i=0 in result.length){
                alert(result[i]["beaconName"]); //or result[i].beaconName 이렇게도 가능
                }
            }
}

result 값에 컨트롤러에 return값이 담겨오고, List는 배열형식이기 때문에 배열로 꺼내올수있다.

여기서, 리턴 타입이 List<Beacon> 라면,자바의 List는 자바스크립트에서는 배열로 받음 Beacon은 object로 접근이 가능하다 .

Reference

http://yoonka.tistory.com/459

Comments