Spring Servlet Mapping de * .html a SO tipo mapeo

Tengo una aplicación de primavera con un servlet que tiene un mapeo de URL de * .html. Todo funciona muy bien con mis controladores anotados.

Mi pregunta es ¿cómo puedo configurar mi servlet y las asignaciones anotadas para imitar las URL como StackOverflow?

Me gustaría ir a una URL sin extensión y, si es posible, agregar una descripción después del /.

Ejemplo:

Actualmente tengo:

/appName/parm1/parm2/pageName.html

me gustaría tener

/appName/parm1/parm2/pageName/description

¿Es esto posible y qué debo hacer con mis controladores anotados?

Muchas Gracias

preguntado el 16 de mayo de 11 a las 16:05

1 Respuestas

Debería poder asignar el servlet del despachador a / * o algo así, y luego usar @PathVariables para obtener la información necesaria del URI. Mira esto http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html y busque @PathVariable. Aquí hay un ejemplo de esa página.

@RequestMapping(value="/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET)
public String findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);  
  Pet pet = owner.getPet(petId);  
  model.addAttribute("pet", pet);  
  return "displayPet"; 
}

que lee el ownerId y el petId del uri de solicitud.

contestado el 16 de mayo de 11 a las 21:05

Gracias por la respuesta. Tengo todo eso funcionando actualmente. Traté de hacer / * y causó que todo se rompiera. También estaba interesado en cómo se puede mostrar la descripción al final de la URL sin que Spring intente representarla como el nombre de la vista. Gracias - blong824

En el tema / *, no estoy en un lugar donde pueda ver mi proyecto de primavera, así que tendré que verlo más tarde. Debería poder hacer un RequestMapping como @ RequestMapping9value = "/ questions / {questionId} / {questionDescription} y luego puede descartar la questionDescription si lo desea y simplemente usar el questionId. - digitaljoel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.