无论是Map还是Model类型都是调用mavContainer.getModel(),Model全称是
BindingAwareModelMap(不仅是model也是map).目标方法执行完后,
由于Map与Model被对应的参数解析器解析后,都变成mavContainer中的defaultModel,因此怎么将defaultModel的值放在请求域中的呢?
如果目标方法的返回值是字符串,那么就将它保存到mavContainer中.
目标方法执行完成将所有数据放在mavContainer中,在将mavContainer封装成mav.然后进行视图对象渲染,渲染的时候将参数放在请求域.
public class InternalResourceView extends AbstractUrlBasedView
//AbstractUrlBasedView类的exposeModelAsRequestAttributes方法
protected void exposeModelAsRequestAttributes(Map<String, Object> model, HttpServletRequest request) throws Exception {
model.forEach((name, value) -> {
if (value != null) {
request.setAttribute(name, value);
} else {
request.removeAttribute(name);
}
});
}