1、ModelAndView类 copy
- public class ModelAndView {
-
- private Object view;//该属性用来存储返回的视图信息
- private ModelMap model;//该属性用来存储处理后的结果数据
- private boolean cleared = false;
-
- public ModelAndView() {
- }
-
- public ModelAndView(String viewName) {
- this.view = viewName;
- }
- public ModelAndView(View view) {
- this.view = view;
- }
- public ModelAndView(String viewName, Map<String, ?> model) {
- this.view = viewName;
- if (model != null) {
- getModelMap().addAllAttributes(model);
- }
- }
- public ModelAndView(View view, Map<String, ?> model) {
- this.view = view;
- if (model != null) {
- getModelMap().addAllAttributes(model);
- }
- }
-
- public ModelAndView(String viewName, String modelName, Object modelObject) {
- this.view = viewName;
- addObject(modelName, modelObject);
- }
-
- public ModelAndView(View view, String modelName, Object modelObject) {
- this.view = view;
- addObject(modelName, modelObject);
- }
- public void setViewName(String viewName) {
- this.view = viewName;
- }
-
- public String getViewName() {
- return (this.view instanceof String ? (String) this.view : null);
- }
- public void setView(View view) {
- this.view = view;
- }
- public View getView() {
- return (this.view instanceof View ? (View) this.view : null);
- }
- public boolean hasView() {
- return (this.view != null);
- }
-
- public boolean isReference() {
- return (this.view instanceof String);
- }
- protected Map<String, Object> getModelInternal() {
- return this.model;
- }
- public ModelMap getModelMap() {
- if (this.model == null) {
- this.model = new ModelMap();
- }
- return this.model;
- }
-
- public Map<String, Object> getModel() {
- return getModelMap();
- }
-
- public ModelAndView addObject(String attributeName, Object attributeValue) {
- getModelMap().addAttribute(attributeName, attributeValue);
- return this;
- }
-
- public ModelAndView addObject(Object attributeValue) {
- getModelMap().addAttribute(attributeValue);
- return this;
- }
-
- public ModelAndView addAllObjects(Map<String, ?> modelMap) {
- getModelMap().addAllAttributes(modelMap);
- return this;
- }
-
- public void clear() {
- this.view = null;
- this.model = null;
- this.cleared = true;
- }
-
- public boolean isEmpty() {
- return (this.view == null && CollectionUtils.isEmpty(this.model));
- }
-
- public boolean wasCleared() {
- return (this.cleared && isEmpty());
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder("ModelAndView: ");
- if (isReference()) {
- sb.append("reference to view with name '").append(this.view).append("'");
- }
- else {
- sb.append("materialized View is [").append(this.view).append(']');
- }
- sb.append("; model is ").append(this.model);
- return sb.toString();
- }
-
- }
2、ModelMap类
- public class ModelMap extends LinkedHashMap<String, Object> {
- public ModelMap() {
- }
- public ModelMap(String attributeName, Object attributeValue) {
- addAttribute(attributeName, attributeValue);
- }
- public ModelMap(Object attributeValue) {
- addAttribute(attributeValue);
- }
- public ModelMap addAttribute(String attributeName, Object attributeValue) {
- Assert.notNull(attributeName, "Model attribute name must not be null");
- put(attributeName, attributeValue);
- return this;
- }
- public ModelMap addAttribute(Object attributeValue) {
- Assert.notNull(attributeValue, "Model object must not be null");
- if (attributeValue instanceof Collection && ((Collection<?>) attributeValue).isEmpty()) {
- return this;
- }
- return addAttribute(Conventions.getVariableName(attributeValue), attributeValue);
- }
- public ModelMap addAllAttributes(Collection<?> attributeValues) {
- if (attributeValues != null) {
- for (Object attributeValue : attributeValues) {
- addAttribute(attributeValue);
- }
- }
- return this;
- }
- public ModelMap addAllAttributes(Map<String, ?> attributes) {
- if (attributes != null) {
- putAll(attributes);
- }
- return this;
- }
- public ModelMap mergeAttributes(Map<String, ?> attributes) {
- if (attributes != null) {
- for (Map.Entry<String, ?> entry : attributes.entrySet()) {
- String key = entry.getKey();
- if (!containsKey(key)) {
- put(key, entry.getValue());
- }
- }
- }
- return this;
- }
- public boolean containsAttribute(String attributeName) {
- return containsKey(attributeName);
- }
- }