sirve requestmapping que puede para método mvc modelo escritura encontrar ejemplo dispatcherservlet commandname basico atributo spring-mvc

spring mvc - requestmapping - ¿Cómo obtengo el valor de mapeo de solicitud en el controlador?



spring dispatcherservlet (5)

Para Spring 3.1 y superior, puede usar ServletUriComponentsBuilder

@RequestMapping("/search/") public ResponseEntity<?> searchWithSearchTerm(@RequestParam("name") String name) { UriComponentsBuilder builder = ServletUriComponentsBuilder.fromCurrentRequest(); System.out.println(builder.buildAndExpand().getPath()); return new ResponseEntity<String>("OK", HttpStatus.OK); }

En el controlador, tengo este código, de alguna manera, quiero obtener la búsqueda de valor de búsqueda "búsqueda". Como es posible ?

@RequestMapping("/search/") public Map searchWithSearchTerm(@RequestParam("name") String name) { // more code here }


Si desea el patrón, puede intentar HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE :

@RequestMapping({"/search/{subpath}/other", "/find/other/{subpath}"}) public Map searchWithSearchTerm(@PathVariable("subpath") String subpath, @RequestParam("name") String name) { String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); // pattern will be either "/search/{subpath}/other" or // "/find/other/{subpath}", depending on the url requested System.out.println("Pattern matched: "+pattern); }


Tener un controlador como

@Controller @RequestMapping(value = "/web/objet") public class TestController { @RequestMapping(value = "/save") public String save(...) { .... } }

No se puede obtener el requestMapping base del controlador usando la reflexión

// Controller requestMapping String controllerMapping = this.getClass().getAnnotation(RequestMapping.class).value()[0];

o el método requestMapping (desde dentro de un método) con reflexión también

//Method requestMapping String methodMapping = new Object(){}.getClass().getEnclosingMethod().getAnnotation(RequestMapping.class).value()[0];

Obviamente, funciona con una solicitud de solicitud de valor único.

Espero que esto ayude.


Una forma es obtenerlo de la ruta del servlet.

@RequestMapping("/search/") public Map searchWithSearchTerm(@RequestParam("name") String name, HttpServletRequest request) { String mapping = request.getServletPath(); // more code here }


@RequestMapping("foo/bar/blub") public Map searchWithSearchTerm(@RequestParam("name") String name, HttpServletRequest request) { // delivers the path without context root // mapping = "/foo/bar/blub" String mapping = request.getPathInfo(); // more code here }