首页 > 代码库 > Spring MVC 之传递模型数据到视图中

Spring MVC 之传递模型数据到视图中

类似于 JSP-Servlet 中的 req.setAttribute 、 req.getSession().setAttribute ... 

--> 最后在 JSP 用 EL 表达式取得这些数据对象,

STEP-1 传递模型数据的三种方式

package spittr.web;import static org.springframework.web.bind.annotation.RequestMethod.GET;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import spittr.Spittle;import spittr.data.SpittleRepository;@Controllerpublic class SpittleController {        private SpittleRepository spittleRepository;        @Autowired    public SpittleController(SpittleRepository spittleRepository) {        this.spittleRepository = spittleRepository;    }        @RequestMapping(value="/spittles", method=GET)        public List<Spittle> spittles() {        return spittleRepository.findSpittles(Long.MAX_VALUE, 20);    } // 采用用无 String 的方式传递模型数据到视图       // --> 属性名推断为 spittleList      // --> 视图名称推断为 spittles --> 去掉了 /    //    public String spittles(Model model) {//        model.addAttribute(spittleRepository.findSpittles(Long.MAX_VALUE, 20));//        return "spittles";//    } 这是等价方法-1:半自定义 --> 自定义视图名    //    public String spittles(Model model) {//        model.addAttribute("myList", spittleRepository.findSpittles(Long.MAX_VALUE, 20));//        return "spittles";//    } 这是等价方法-2:高度自定义。 --> 自定义视图名以及属性名}

STEP-2 在 JSP 页面中获取数据

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="s" uri="http://www.springframework.org/tags"%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><html>  <head>    <title>Spitter</title>    <link rel="stylesheet" type="text/css" href="<c:url value="http://www.mamicode.com//resources/style.css" />" >  </head>  <body>    <div class="spittleForm">      <h1>Spit it out...</h1>      <form method="POST" name="spittleForm">        <input type="hidden" name="latitude">        <input type="hidden" name="longitude">        <textarea name="message" cols="80" rows="5"></textarea><br/>        <input type="submit" value="Add" />      </form>    </div>    <div class="listTitle">      <h1>Recent Spittles</h1>      <ul class="spittleList">        <c:forEach items="${spittleList}" var="spittle" >          <li id="spittle_<c:out value="http://www.mamicode.com/spittle.id"/>">            <div class="spittleMessage"><c:out value="${spittle.message}" /></div>            <div>              <span class="spittleTime"><c:out value="${spittle.time}" /></span>              <span class="spittleLocation">(<c:out value="${spittle.latitude}" />, <c:out value="${spittle.longitude}" />)</span>            </div>          </li>        </c:forEach>      </ul><%--       <c:if test="${fn:length(spittleList) gt 20}">        <hr />        <s:url value="/spittles?count=${nextCount}" var="more_url" />        <a href="${more_url}">Show more</a>      </c:if> --%>    </div>  </body></html>

 

 

Spring MVC 之传递模型数据到视图中