Spring MVC Controller误会

时间:2015-03-27 06:54:28

标签: java spring-mvc controller

来自控制器的代码:

@Controller
public class HomeController {

    @Autowired
    private ItemService itemService;


    @RequestMapping("/home")
    public String showHomePage(Map<String, Object> model) {

        model.put("items", itemService.getItems());

        return "home";
    }
}

通讯员的一部分 home.jsp

<c:forEach items="${items}" var="item">
   ${item}
</c:forEach>

在浏览器中,我获得了从itemService.getItems().返回的元素 Spring如何发现model map包含值为请求属性?

1 个答案:

答案 0 :(得分:1)

DispatcherServlet是否将Map类型的所有参数的内容复制到请求属性?

是的,Spring MVC将所有参数从模型复制到 HttpServletRequest 对象。 Spring之所以选择不直接使用 HttpServeltRequest ,是因为要求他们希望尽可能独立于视图技术,因此能够驱动不需要的视图技术# 39; t取决于 HttpServeltRequest

将模型公开为请求参数是视图的一个方面,如果您查看从InternalResourceView延伸的SpringMVC AbstractView的来源,您将找到相应的代码。保存exposeModelAsRequestAttributes方法