W moim kontrolerze mam parametr String, zawierający niektóre id, które nie powinny mieć wartości null z pustym ciągiem. Zastanawiam się, czy istnieje sposób sprawdzenia, czy nie jest pusty String w paramertach @RequestMapping? Próbowałem rozwiązać go w pewnym sensieJak sprawdzić parametr żądania nie jest pusty Ciąg w parametrach @RequestMapping?
@RequestMapping(value = someURL, params = {"id"})
public SomeResponse doSomething(@RequestParam(required = true) String id)
@RequestMapping(value = someURL, params = {"!id="})
public SomeResponse doSomething(@RequestParam(required = true) String id)
@RequestMapping(value = someURL, params = {"!id=\"\""})
public SomeResponse doSomething(@RequestParam(required = true) String id)
bez powodzenia. Jak rozumiem, zarówno params = {"id"}
, jak i @RequestParam(required = true)
może tylko sprawdzić, czy parametr id
jest przedstawiony w żądaniu (! = Null).
Jest bardzo prawdopodobne, że muszę sprawdzić, które z kodem kontroler Boby, jak
if (id == null || id.isEmpty()) {
return someErrorResponse;
}
ale proszę mnie poprawić, jeśli się mylę. Z góry dzięki.
P.S. moja aplikacja działa na platformie Java 1.7 SE w pakiecie Apache Tomcat 7.0.62
Zauważyłem, że "required = true" nie jest nawet konieczne, ponieważ otrzymałem status 400, gdy pominięto pole nagłówka: '{" status ": 400," error ":" Bad Request "," exception ":" org.springframework.web.bind.ServletRequestBindingException "," message ":" Brak nagłówka żądania "X-Custom-Header" dla parametru metody typu String "," path ":"/api/"}' – user3105453
Dzięki, myślę to jest to, czego potrzebuję. Kiedy zdefiniowałem adnotację w sposób jaki zaproponowałeś, umieść punkt przerwania na początku metody kontrolera i uruchomiłem test, ja a) nie dostałem się do metody kontrolera; b) uzyskał własny wyjątek wyjątek org.springframework.web.bind.UnsatisfiedServletRequestParameterException: Warunki parametru "id! =" nie zostały spełnione dla rzeczywistych parametrów żądania: id = {}. – WeGa