Chcę użyć Spring MVC 3.0 do budowania interfejsów dla transakcji AJAX. Chcę, aby wyniki były zwracane w formacie JSON, ale niekoniecznie chcę, aby strony internetowe były budowane za pomocą JSP. Chcę tylko, aby żądania do kontrolerów były przechwytywane/routowane przez DispatcherServlet, a reszta projektu nadal działała jak zwykła aplikacja internetowa Java bez integracji ze Springiem.

Pomyślałem, aby zdefiniować wzorzec adresu URL mapowania serwletów w web.xml jako coś w rodzaju "/controller/*", a następnie ustawić poziom klasy @RequestMapping w moim kontrolerze na coś w rodzaju @RequestMapping("/controller/colors") , a na koniec na poziomie metody @RequestMapping(value = "/controller/colors/{name}", method = RequestMethod.GET).

Jedynym problemem jest to, że nie jestem pewien, czy muszę nadal dodawać "/controller" we wszystkich RequestMappings i bez względu na to, jaką kombinację próbuję, otrzymuję błędy 404 o braku dostępności żądanego zasobu.

Ostatecznym celem jest tutaj możliwość wpisania w przeglądarce internetowej „http://localhost:8080/myproject/controller/colors/red” i odzyskania wartości RGB jako ciągu JSON.

1
Bal 18 październik 2012, 18:38

2 odpowiedzi

Najlepsza odpowiedź

Nie masz racji, że musisz wszędzie dodawać całą ścieżkę, ścieżki się kumulują-

Jeśli masz mapowanie serwletów /controller/* dla Spring's DispatcherServlet, każde wywołanie /controller/* będzie teraz obsługiwane przez DispatcherServlet, musisz tylko zająć się resztą informacji o ścieżce w @RequestMapping, więc twój kontroler może być

@Controller
@RequestMapping("/colors")
public class MyController{

 @RequestMapping("/{name} 
 public String myMappedMethod(@PathVariable("name") String name, ..){
 }

}

Więc teraz ta metoda będzie obsługiwana przez wywołanie /controller/colors/blue itd.

2
Biju Kunjummen 18 październik 2012, 19:23