2012-10-03 17 views
12

Ze Spring MVC wiem jak ustawić RequestMapping w każdym kontrolerze i metodzie/akcji.Spring MVC Request mapowanie, czy może to być dynamiczne/konfigurowalne?

Ale co, jeśli chciałem to być konfigurowalny, tak dla przykładu I dodaje regulatorów:

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 

Teraz w mojej aplikacji, administrator może skonfigurować 2 blogi dla webiste i 1 artykuł sekcja więc URL byłoby jak:

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

Może po pewnym czasie administrator chce kolejny rozdział artykułu, więc po prostu skonfigurować, że z nowej sekcji, takich jak:

www.example.com/article_section2/ 

To musi działać dynamicznie/w locie bez konieczności ponownego uruchamiania aplikacji oczywiście.

Moje pytanie dotyczy tylko tego, w jaki sposób zajmie się mapowaniem adresów URL do kontrolerów.

Jak byłoby to możliwe dzięki Spring MVC?

Wiem tylko, jak mapować adresy URL do kontrolerów używających @RequestMapping("/helloWorld") na poziomie kontrolera lub metody, ale powoduje to, że mapowania adresów URL są stałe i niemożliwe do skonfigurowania, tak jak tego chcę.

Aktualizacja:

będę przechowywania ścieżki w bazie danych, a także z mapowaniem do typu sterownika tak jak:

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 

Z powyższych informacji, w jaki sposób mogę wysyłką żądanie do właściwego kontrolera?

Ponownie, nie patrząc na przeładowanie/przesunięcie, i zdaję sobie sprawę, będzie to wymagało więcej pracy, ale jej w ciemno :)

+1

Jak doszło do wdrożenia? Jestem w podobnej sytuacji. – DairyLea

Odpowiedz

5

Czy ten rodzaj pracy mapowania URL dla ciebie?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

Jeśli tak, to jest to łatwe: Wiosna 3 obsługuje zmienne Ścieżka: http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

Alternatywnie, można utworzyć rodzajowe mapowanie żądania i własną sub-dyspozytora, który odczytuje plik konfiguracyjny, ale myślę, że to prawdopodobnie więcej pracy niż jest warta.

+3

Chcę uzyskać pełną kontrolę nad adresem URL, wiem o zmiennych ścieżkowych dzięki. Właściwie zamierzam odczytywać ścieżki z bazy danych, a następnie przekazywać żądania w jakiś sposób do właściwego kontrolera, ale nie jestem pewien jak. – loyalflow

0

czy to nie działa? @RequestMapping ("/ helloWorld *")

2

Prawidłowa zmiana mapowań żądań w czasie wykonywania może być trudna (i niezbyt zalecana, ponieważ mogą wystąpić niewielkie błędy). Jeśli nadal chcesz to zrobić, być może JRebel, a dokładniej LiveRebel może być interesujący w przypadku zmiany na żywo kodu i konfiguracji.

W przeciwnym razie, tak jak sugerowały inne postulaty, RequestMappings obsługuje symbole wieloznaczne, granice tego powinny być jasne po szybkiej lekturze oficjalnej dokumentacji.

+2

Nie Chcę pełnej kontroli nad adresem URL, więc to nie zadziała, i nie chcę przeładowywać/ponownie wdrażać żadnego kodu. miałem nadzieję, że uda mi się jakoś przekazać wniosek do właściwego kontrolera. – loyalflow

+3

Pisanie własnego HandlerMapping może być interesujące http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

dzięki za ten link, wydaje się, że być kierunkiem, który będę musiał przyjąć biorąc pod uwagę wymagania. – loyalflow

1

Spróbuj skorzystać z @RequestMapping dzikie karty jak poniżej:

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

Nadzieja to pomaga !!!

Powiązane problemy