Study/SPRING FRAMEWORK
model 을 보기좋게 정렬하기(modelandview forEach)
Answer Choi
2015. 2. 12. 12:14
반응형
저번 포스팅(Mybatis 이용하여 Spring 에서 MySql 이용하기)에서 는 DB에서 읽어온 데이터들이
하나의 스트링형태로 뿌려줘서 쭈욱 길게 나왔던걸 보실 수 있습니다.
하지만 가독성이 너무 떨어지기 때문에 table을 만들어서 보기 좋게 보려고 합니다.
일단 MySql에 이렇게 넣었습니다.
그리고 그 전처럼 코딩을 했더니 웹브라우저에서 이렇게 보입니다.
HomeController.java를 보시면 아래와 같습니다.
기본 되있는데로 한거죠.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { logger.info("Welcome home! The client locale is {}.", locale); Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate ); List<HashMap<String, String>> outputs = sqlSession.selectList("userControlMapper.selectSample"); model.addAttribute("showDB", outputs); return "home"; } | cs |
그래서 이렇게 바꿔줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView home(Locale locale, Model model) { logger.info("Welcome home! The client locale is {}.", locale); Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate ); List<HashMap<String, String>> outputs = sqlSession.selectList("userControlMapper.selectSample"); ModelAndView mav=new ModelAndView("home","m" , outputs); return mav; } | cs |
차이가 보이시나요?
Line 2 : 일단 반환값이 String이 ModelAndView로 바뀌었습니다.
Line 13 : Model 객체에 showDB라는 이름으로 outputs이라는 List를 넣어줬던걸 ModelAndView 객체에 넣어줬습니다.
Line 14 : 따라서 반환값에도 차이가 있죠?
그리고 View인 home.jsp로 가보겠습니다.
기존 코드
1 2 3 4 5 6 7 8 9 | <body> <h1> Hello world! </h1> <P> The time on the server is ${serverTime}. </P> <p> This is my Database </p> ${showDB} </body> | cs |
기존 컨트롤러에서 보낸 List 타입의 showDB를 그대로 뿌려줘서 String 형태로 그대로 나왔었습니다.
이 부분을 forEach를 써서 바꿔보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <table border="1"> <tr> <td>번호</td> <td>Vrms</td> <td>Irms</td> <td>Watt</td> <td>Pf</td> <td>Wh</td> <td>Date</td> </tr> <c:forEach var="mo" items="${m}"> <tr> <td><c:out value="${mo.id}"></c:out></td> <td><c:out value="${mo.Vrms}"></c:out></td> <td><c:out value="${mo.Irms}"></c:out></td> <td><c:out value="${mo.Watt}"></c:out></td> <td><c:out value="${mo.Pf}"></c:out></td> <td><c:out value="${mo.Wh}"></c:out></td> <td><c:out value="${mo.date}"></c:out></td> </tr> </c:forEach> </table> | cs |
Line 9 : 컨트롤러에서 model 'm'이라는 이름으로 ModelAndView에 넣었었는데요.
이 'm'을 변수 'mo'에 넣어줍니다.
그리고 테이블을 만들어서 제목을 넣어주고요.
mo에서 세부 항목을 빼옵니다.
mo.id, mo.Vrms 등등 이렇게요.
그리고 뷰를통해 보면
이렇게 보기좋게 나온답니다.
반응형