Próbuję zmoczyć moje stopy wiosną MVC 3.0, i chociaż mogę go uruchomić, nie mogę wydajnie obsłużyć tego konkretnego scenariusza.Spring MVC 3.0: Jak skutecznie sprawdzić zmienną ścieżki, która jest globalna dla wszystkich mapowań zapytań?
Mam kontroler z który obsługuje "/ {studyName}/Module" prefiks, i wygląda to mniej więcej tak: -
@Controller
@RequestMapping(value = "/{studyName}/module")
public class ModuleController {
@RequestMapping(...)
public ModelAndView getA(@PathVariable String studyName, ...) {
if (!validStudy(studyName)) { return bad request; }
...
}
@RequestMapping(...)
public ModelAndView getB(@PathVariable String studyName, ...) {
if (!validStudy(studyName)) { return bad request; }
...
}
@RequestMapping(...)
public ModelAndView getC(@PathVariable String studyName, ...) {
if (!validStudy(studyName)) { return bad request; }
...
}
@RequestMapping(...)
public ModelAndView getD(@PathVariable String studyName, ...) {
if (!validStudy(studyName)) { return bad request; }
...
}
}
problem z tym kodem jest, mam walidacja studyName rozrzucone nad metodami i prawdopodobnie również w innych metodach kontrolerów. Czy istnieje sposób, w jaki mogę wykonać walidację zmiennej zmiennej studyName w jednym miejscu bez użycia czegoś takiego jak AOP? Jak radzisz sobie z walidacją w ten sposób?
Dzięki.
+1 do Ciebie. Spojrzałem na @valid, ale w moim przypadku prawdopodobnie muszę utworzyć własną adnotację sprawdzania poprawności, ponieważ muszę sprawdzić, czy nazwa studyName jest zarejestrowana w mojej bazie danych, więc nie mogę używać wbudowanych walidacji z walidatora hibernacji. Jeśli chodzi o wiązanie walidatora, nadal muszę sprawdzić "if (binder.hasErrors()) {do something}" w każdej metodzie kontrolera, co jest dokładnie problemem, z którym obecnie się borykam. Być może jest to jedyne eleganckie rozwiązanie dostępne teraz, ale to naprawdę sprawia, że widzę tę samą kontrolę powtarzaną w każdej metodzie. – limc
Jeśli weryfikacja polega na sprawdzeniu, czy coś istnieje w bazie danych, zakładając, że jest prawdopodobne, po prostu wykonam zapytanie i zarejestruję metodę @ExceptionHandler, aby poradzić sobie z mało prawdopodobnym przypadkiem, w którym nie jest. – GaryF
O ile mogę powiedzieć, nie można jeszcze użyć ważnej adnotacji z PathVariable: https://jira.springsource.org/browse/SPR-6380 –