requestmapping recibir puede pathvariable pasar parametros para método mvc modelandview funciona formulario escritura entre encontrar ejemplo datos controladores como commandname atributo java spring spring-mvc

java - recibir - requestmapping post



Cómo pasar un atributo de sesión como argumento de método(parámetro) con Spring MVC (3)

En resumen, quiero algo como:

public String action(@SessionAttribute User user) {..}

en lugar de

public String action(HttpSession session) { User user = session.getAttribute("user"); }

Principalmente por el bien de:

  • legibilidad
  • examen de la unidad

Encontré una solución .

La idea es registrar un WebArgumentResolver personalizado para AnnotationMethodHandlerAdapter , que maneja una anotación personalizada - @SessionAttribute (o @SessionParam ).

Una nota para el código publicado allí es que se puede usar param.getParameterName() si no se especifica ningún value .


Incluso si usamos @ModelAttribute ("usuario") Usuario como el parámetro del método y luego usamos el objeto del usuario en su método, habrá actualizado al usuario de la sesión. El nombre del atributo debe coincidir con el nombre del atributo de sesión "usuario".

public String myMethod( @ModelAttribute("user") User user ){ System.out.println(user.getDetails()); }


Para aquellos que llegan a través de Google, como mínimo 4.3.2.RELEASE, Spring incluye una anotación @SessionAttribute incorporada:

public String action( @SessionAttribute(required=false, name="user") User user) { // ... }

Una solución personalizada ya no es necesaria.