23 Ocak 2018 Salı

SpringMVC ModelAndView Sınıfı - Server Side Rendering İçindir

Giriş
Şu satırı dahil ederiz.
import org.springframework.web.servlet.ModelAndView;
Açıklaması şöyle
ModelAndView is a holder for both Model and View , so that the controller can return both model and view together.
Bu sınıfın içinde bir tane 
private ModelMap model;
var. Yani sınıf yerine Model veya ModelMap kullanılabilir

Kullanım
addObject ile ismi olan bir nesne eklenir. Daha sonra bu nesneye JSP sayfasında tekrar ismi ile erişilir.
Eğer aynı anda birden fazla ismi olan nesne eklemek istersek addObjects() kullanılır

Örnek - addObject
Şöyle yaparız.
@Controller
public class HelloWorldController {
  @RequestMapping("/welcome")
  public ModelAndView hello() {
    ModelAndView model = new ModelAndView("hello");
    model.addObject("message", "spring mvc");
    return model;
  }
}
jsp sayfası şöyledir
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>
Örnek - addAllOjbects
Şöyle yaparız
@RequestMapping(value = "/showCars", method = RequestMethod.GET)
public ModelAndView showApp() {

  ModelAndView modelAndView = new ModelAndView();

  //adding a single attribute for the modelMap
  PageContent pageContent = new PageContent();
  pageContent.setHeaderName("All Cars - From Controller");
  modelAndView.addObject(pageContent);

  List<Car> carList = new ArrayList<>();
  ...
  Map<String,Object> allObjectsMap = new HashMap<>();
  allObjectsMap.put("allCarObjects", carList);

  //adding a set of objects for the model map
  modelAndView.addAllObjects(allObjectsMap);

  modelAndView.setViewName("CarView");
  return modelAndView;
}
jsp için şöyle yaparız. Burada modelAndView nesnesine pageContent
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
  <head>
    <title>ModelAttribute Example</title>
  </head>
  <body>
    <h1>${pageContent.headerName}</h1>
    <table>
      <tr>
        <th>Model</th>
        <th>Registration No</th>
        <th>Year of Manufacture</th>
      </tr>

      <c:forEach var="car" items="${allCarObjects}">
        <tr>
          <td><c:out value="${car.model}" /></td>

          <td><c:out value="${car.regNo}" /></td>

          <td><c:out value="${car.year}" /></td>
        </tr>
      </c:forEach>
    </table>
  </body>
</html>
constructor
jsp sayfasının ismi belirtilir. Şöyle yaparız.
 ModelAndView model = new ModelAndView("hello");
addObject
İmzası şöyle. jsp sayfasında gösterilecek nesne belirtilir. 
public ModelAndView addObject(Object attrbiuteValue);
addObject

İmzası şöyle. jsp sayfasında gösterilecek nesne belirtilir. 
public ModelAndView addObject(String attributeName, Object attrbiuteValue);
Metodun içi şöyle. ModelMap'e ekleme yapar.
public ModelAndView addObject(String attributeName, Object attributeValue) {
  getModelMap().addAttribute(attributeName, attributeValue);
  return this;
}
Örnek
Şöyle yaparız.
model.addObject("message", "spring mvc");
addAll

Hiç yorum yok:

Yorum Gönder