Domanda

Ad esempio, con l'URL

foo.com/bar/99

99 sarà disponibile direttamente a un metodo nel controllore come argomento. Il controllore è mappato / bar

Per chiunque abbia familiarità con ASP.NET MVC o Django, questo sarebbe simile a routes.MapRoute nel primo e l'utilizzo (? P \ d +) nel urlpatterns in quest'ultimo.

Sarebbe possibile elaborare i dati nella richiesta oggetto HTTP direttamente per ottenere questo, ma mi piacerebbe sapere se Spring MVC è dotato di supporto per questo (in particolare la versione 2.5).

È stato utile?

Soluzione

No, Primavera non supporta questa out of the box. È possibile, tuttavia, mappa percorso metodo nome con @ RequestMapping e InternalPathMethodNameResolver opportunamente configurate:

@Controller
@RequestMapping("/bar/*")
public class MyController {
  ...
  public String do99(HttpServletRequest request) {
    ...
  }
}

Dovrete specificare prefix per InternalPathMethodNameResolver come "fare" per quanto sopra a lavorare dal momento che i nomi dei metodi non possono iniziare con cifre. Se si sceglie di usare "foo.com/bar/baz" come URL e chiamare il metodo di baz, sarebbe necessario alcuna configurazione aggiuntiva.

Se non si desidera utilizzare il nome del metodo di mappatura, ottenendo '99' come parametro è facile come afferrandolo dal request.getPathInfo() nel metodo.

Altri suggerimenti

Per chi utilizza Spring 3, ho imparato questo può essere fatto utilizzando la nuova annotazione @PathVairable

Ecco l'esempio da http: // blog .springsource.com / 2009/03/08 / rest-in-spring-3-MVC /

@RequestMapping("/hotels/{hotelId}")
public String getHotel(@PathVariable String hotelId, Model model) {
    List<Hotel> hotels = hotelService.getHotels();
    model.addAttribute("hotels", hotels);
    return "hotels";
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top