Spring on @ModelAttribute usado para anotar los parámetros del método de solicitud
@ModelAttribute se puede utilizar para anotar métodos y parámetros.
1. Al anotar un método en el controlador, el parámetro devuelto es un valor de atributo y los métodos anotados con @ModelAttribute se ejecutarán en secuencia antes de cada llamada al método de procesamiento de URL en el controlador.
2. Los parámetros del método del controlador anotado se utilizan para obtener valores de atributos del modelo, formulario o parámetros de solicitud de URL.
El siguiente ejemplo se ha verificado en Spring 3.0.
@Controller
clase pública TestAction {
/*--------------------- @ModelAttribute anota un método---------------------*
/* El valor de retorno del método es: vacío, lo que no hace mucho sentido*/
@ModelAttribute
public void populateModel(ModelMap model) {
System.out.println("- -ModelAttribute")out.println ("-- - populateModel ---");
model.addAttribute("attributeName", "111");
}
/*If el atributo especificado no es el nombre especificado, este método devolverá un objeto, equivalente a model.addAttribute("user",user)*/
@ModelAttribute
public User addUser() {
System.out.println("---addUser---");
Usuario usuario = nuevo Usuario();
usuario.setId (1);
user.setUsername("alan");
user.setPassword("1234");
devolver usuario;
}
//* Especifique el nombre del atributo. Este método devuelve una cadena, que es equivalente al modelo.
addAttribute("string1-key", "string1-value")*/
@ModelAttribute("string1-key")
public String addString() {
System.out.println("---addString---");
return "string1-value";
}
// * Devolver atributos del modelo, no ver nombres*/
@ RequestMapping(value = "helloWorld1")
@ModelAttribute("attributeName")
public String helloWorld1 () {
System.out.println("--- holaMundo1---");
Devuelve "hola";
} p >
/* ------------------------@ModelAttribute parámetros del método de anotación--------------- - -----*/
/* Obtenga el valor del atributo del modelo y conviértalo en una variable del tipo correspondiente**
@RequestMapping(value = "helloWorld ")
cadena pública helloWorld(@ModelAttribute("usuario" ) Usuario usuario、
@ModelAttribute("attributeName") Cadena unNombre,
@ModelAttribute( "cadena1- valor") Cadena svalor) {
System.
System.out.Println("aName")println("aName="+aName+",svalue="+ svalue);
return "helloWorld";
}
/* Obtenga el valor del parámetro de atributo del formulario o parámetro URL y colóquelo en el tipo correspondiente En los parámetros, tenga en cuenta: En este momento, el nombre del componente en el formulario es el mismo que el nombre del atributo del parámetro. Por ejemplo, el objeto Usuario tiene dos atributos, a saber, nombre de usuario y contraseña. be Solo el nombre de usuario y la contraseña pueden lograr la inyección de valor de atributo.
* Tenga en cuenta que la clase Usuario debe tener un constructor sin parámetros o un método de establecimiento
* En este momento, no es necesario escribir @ModelAttribute explícitamente*
@RequestMapping(value = "helloWorld2")
public String helloWorld2(@ModelAttribute("user") Usuario usuario) {
System.out.println("---- holaMundo ---"+user.getUsername()+", "+user.getPassword());
return "helloWorld";
}
}
}
}