/* * Copyright 2002-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.ui; import java.util.Collection; import java.util.Map; /** * Java-5-specific interface that defines a holder for model attributes. * Primarily designed for adding attributes to the model. * Allows for accessing the overall model as a <code>java.util.Map</code>. * * @author Juergen Hoeller * @since 2.5.1 */ public interface Model { /** * Add the supplied attribute under the supplied name. * @param attributeName the name of the model attribute (never <code>null</code>) * @param attributeValue the model attribute value (can be <code>null</code>) */ Model addAttribute(String attributeName, Object attributeValue); /** * Add the supplied attribute to this <code>Map</code> using a * {@link org.springframework.core.Conventions#getVariableName generated name}. * <p/><emphasis>Note: Empty {@link java.util.Collection Collections} are not added to * the model when using this method because we cannot correctly determine * the true convention name. View code should check for <code>null</code> rather * than for empty collections as is already done by JSTL tags.</emphasis> * @param attributeValue the model attribute value (never <code>null</code>) */ Model addAttribute(Object attributeValue); /** * Copy all attributes in the supplied <code>Collection</code> into this * <code>Map</code>, using attribute name generation for each element. * @see #addAttribute(Object) */ Model addAllAttributes(Collection<?> attributeValues); /** * Copy all attributes in the supplied <code>Map</code> into this <code>Map</code>. * @see #addAttribute(String, Object) */ Model addAllAttributes(Map<String, ?> attributes); /** * Copy all attributes in the supplied <code>Map</code> into this <code>Map</code>, * with existing objects of the same name taking precedence (i.e. not getting * replaced). */ Model mergeAttributes(Map<String, ?> attributes); /** * Does this model contain an attribute of the given name? * @param attributeName the name of the model attribute (never <code>null</code>) * @return whether this model contains a corresponding attribute */ boolean containsAttribute(String attributeName); /** * Return the current set of model attributes as a Map. */ Map<String, Object> asMap(); }