2017-07-15 5 views
0

Ich muss ein mehrteiliges Formular Daten aus JSON und mehreren Dateien akzeptieren und es an einige APIs von Drittanbietern übergeben.Throw-Fehler, wenn einer der Request-Parameter fehlt/ungültig

Derzeit ich eine Komponente als

@Component 
public class Submit{ 
    private Multipart file; 
    private String json; 
    //getters setters 
} 
erstellt habe

Der Controller sieht aus wie

@Controller 
{ 
    //some code 
    @PostMapping("/submit") 
    public void post(@ModelAttribute @Valid Submit submit) throws Exception{ 
    getName() 
    } 
} 

Wenn eine Anforderung, nicht mit allen Parametern, dh Datei & json, hergestellt wird vom Postman-Client zur/submit-API scheint Spring Boot keine Art von Validierungsausnahme-/Fehleranforderungsfehler auszulösen.

Stattdessen geht es mit der getName() Funktion.

Wie kann ich sicherstellen, dass eine Ausnahme ausgelöst wird, wenn einer der Parameter aus dem Submit-Modell fehlt?

Sollte nicht @Valid dafür verantwortlich sein?

Danke!

+0

Sie machen keine Validierung ... Sie sagen, dass sollte gültig sein, aber Sie sagen nicht, was es validieren sollte ... –

+0

Einverstanden. @Notnull hat gefehlt – user1477054

Antwort

0

Verwenden Sie Anmerkungen und BindingResult. In Ihrem Absenden Klasse:

import javax.validation.constraints.NotNull; 
public class Submit{ 
    @NotNull 
    private Multipart file; 
    @NotNull 
    private String json; 
    //getters setters 
} 

In post-Methode Sie haben BindingResult zu liefern.

import org.springframework.validation.BindingResult; 
@PostMapping("/submit") 
public void post(@ModelAttribute @Valid Submit submit, BindingResult bindingResult, HttpServletResponse response) throws Exception{ 
    if (bindingResult.hasFieldErrors()){ 
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 
    return; 
    } 
    getName() 
} 

Dies sollte für Sie arbeiten.

+0

Danke! Das hat geholfen !! – user1477054

Verwandte Themen