Nel mio controller ho un parametro String, contenente qualche id, che non dovrebbe essere nullo di stringa vuota. Mi chiedo, c'è un modo per controllare che non sia vuota String nei parametri @RequestMapping? ho cercato di risolverlo in qualche modoCome controllare il parametro request non è vuoto String in parametri @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)
senza successo. Come ho capito, sia params = {"id"}
sia @RequestParam(required = true)
possono solo verificare che il parametro id
sia presentato in richiesta (! = Null).
è più probabile che devo controllare che con il codice di controllo boby, come
if (id == null || id.isEmpty()) {
return someErrorResponse;
}
ma per favore mi corregga se sbagliato. Grazie in anticipo.
P.S. la mia app è in esecuzione su Java 1.7 SE nel contenitore Apache Tomcat 7.0.62
Ho notato che 'required = true' non è nemmeno necessario in quanto ho ottenuto lo stato 400 quando ho omesso un campo di intestazione: '{" status ": 400," error ":" Bad Request "," exception ":" org.springframework.web.bind.ServletRequestBindingException "," message ":" Intestazione richiesta mancante 'X-Custom-Header' per parametro metodo di tipo String "," percorso ":"/api/"}' – user3105453
Grazie, penso questo è ciò di cui ho bisogno. Quando ho definito l'annotazione nel modo in cui hai proposto, inserito il punto di interruzione all'inizio del metodo del controller ed eseguito il test, I a) non è entrato nel metodo del controller; b) ha ottenuto l'eccezione auto-spiegata org.springframework.web.bind.UnsatisfiedServletRequestParameterException: Condizioni dei parametri "id! =" non soddisfatte per i parametri di richiesta effettivi: id = {}. – WeGa