应用案例 一
public String login1(Model model ) {
//免登陆参数
model.addAttribute("X", X);
model.addAttribute("XX", XX);
return "login";
}
/**
* 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}.
*
* @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})
* @param attributeValue the model attribute value (can be {@code null})
*/
Model addAttribute(String attributeName, @Nullable Object attributeValue);
/**
* Add the supplied attribute to this {@code Map} using a
* {@link org.springframework.core.Conventions#getVariableName generated name}.
* <p><i>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} rather
* than for empty collections as is already done by JSTL tags.</i>
* @param attributeValue the model attribute value (never {@code null})
*/
Model addAttribute(Object attributeValue);
/**
* Copy all attributes in the supplied {@code Collection} into this
* {@code Map}, using attribute name generation for each element.
* @see #addAttribute(Object)
*/
Model addAllAttributes(Collection<?> attributeValues);
/**
* Copy all attributes in the supplied {@code Map} into this {@code Map}.
* @see #addAttribute(String, Object)
*/
Model addAllAttributes(Map<String, ?> attributes);
/**
* Copy all attributes in the supplied {@code Map} into this {@code Map},
* 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})
* @return whether this model contains a corresponding attribute
*/
boolean containsAttribute(String attributeName);
/**
* Return the attribute value for the given name, if any.
* @param attributeName the name of the model attribute (never {@code null})
* @return the corresponding attribute value, or {@code null} if none
* @since 5.2
*/
@Nullable
Object getAttribute(String attributeName);
/**
* Return the current set of model attributes as a Map.
*/
Map<String, Object> asMap();
}
应用案例 二
public static void main(String[] args) {
//test 类
TestClass test = new TestClass();
//class1 类, 实现了OutputInterface接口
OutputClass1Impl class1 = new OutputClass1Impl();
//class2 类, 实现了OutputInterface接口
OutputClass2Impl class2 = new OutputClass2Impl();
test.getOutput(class1);
System.out.println("<----------->");
test.getOutput(class2);
}
//Inter接口
private interface OutputInterface {
public void output();
}
//Class1类 实现Inter接口
static class OutputClass1Impl implements OutputInterface {
@Override
public void output() {
System.out.println("this is Class1");
}
}
//Class2类 实现Inter接口
static class OutputClass2Impl implements OutputInterface {
@Override
public void output() {
System.out.println("this is Class2");
}
}
//Test1类 参数为Inter接口
static class TestClass {
//方法参数为接口
public void getOutput(OutputInterface inter) {
inter.output();
}
}