Buchen Sie ein Datei-und JSON-Daten zu Frühlings-rest-Dienst
Baue ich ein Frühlings-rest-service für das hochladen einer Datei. Es ist eine form, die aus verschiedenen Feld und ein Feld für das hochladen einer Datei. Nach dem abschicken das Formular, ich schicke ein multipart-Formular-Anforderung, d.h. Content-Type
als multipart/form-data
.
Also versuchte ich mit der unten
@RequestMapping(value = "/companies", method = RequestMethod.POST)
public void createCompany(@RequestBody CompanyDTO companyDTO, @RequestParam(value = "image", required = false) MultipartFile image){
.................
Aber, die oben nicht funktioniert hat. Also für die Zeit,die ich gesendet JSON-Daten als String und formung der Gesellschaft-Objekt aus String in rest-Dienst wie
@RequestMapping(value = "/companies", method = RequestMethod.POST)
public void createCompany(@RequestParam("companyJson") String companyJson, @RequestParam(value = "image",required = false) MultipartFile image) throws JsonParseException, JsonMappingException, IOException{
CompanyDTO companyDTO = new ObjectMapper().readValue(companyJson, CompanyDTO.class);
.............................
Kann ich nicht senden, JSON-Daten mit @RequestBody ohne JSON-String?
- Könnte ein Duplikat der stackoverflow.com/questions/4083702/...
- siehe auch stackoverflow.com/questions/15502054/...
- Das problem ist
@RequestBody
finden Sie unter stackoverflow.com/questions/29370143/... - Ohne @RequestBody, Objekte, Felder werden nicht immer abgebildet, d.h. DTO Felder werden auf null gesetzt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anhängen der Werte an den URL, welche u getan haben, jetzt mit @RequestParam.
@RequestParam annotation funktioniert nicht für komplexe JSON-Objekte , es ist speziell für Integer oder String .
Wenn es ein Http-POST-Methode , verwenden von @RequestBody machen den Frühling zum zuordnen der eingehenden Anfrage an den POJO, was u haben, erstellt (Bedingung: wenn die POJO-Karten das eingehende JSON)
erstellen FormData() und hängen Sie Ihre json-Datei und
//Dienst namens in den oben
//in der java-Teil mit ObjectMapper
Verwenden Sie die folgende code-snippet: