Erforderliche String-parameter nicht vorhanden ist mit dem Frühling RestTemplate
Ich habe Probleme beim posten 2 Parameter mit RestTemplate :
- ein String
- eine MultipartFile
Ich glaube nicht, dass es ein problem in meinem controller ist, weil es ist sehr basic. Es scheint, dass der controller nicht erhielt den Namen parameter. Könnten Sie mir sagen, was falsch in meinem code
Der controller (der Empfänger)
@RequestMapping(value="/fileupload", method=RequestMethod.POST)
public void handleFileUpload(@RequestParam("name") String fileUploadHandlerName,
@RequestParam("file") MultipartFile file)
{
[...]
}
Der Rest-client (der Absender)
RestTemplate rest = new RestTemplate();
URI uri = new URI("http://127.0.0.1:7011/xxxxxxxx/admin/fileupload");
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("name", "import_keys");
Resource file = new ClassPathResource("xmlFileImport/file.xml");
parts.add("file", file);
rest.postForLocation(uri, parts);
Der controller stackTrace
org.springframework.web.binden.MissingServletRequestParameterException:
Erforderliche String-parameter 'name' ist nicht vorhanden
Haben Sie versucht, diese version von postForLocation?
Kann ein Spring-controller-Griff multipart-requests, die einfach und bequem mit nur einer handler-Methode? Sie müssen irgendeine Art von resolver -, haben Sie eine?
Ich brauche nicht zu verwenden
Sie waren richtig!!!! Ich habe nicht alle resolver. Ich habe gerade mit CommonsMultipartResolver und es funktioniert. Posten Sie Kommentare als Antwort und ich werde es akzeptieren. Dank
Ich bin froh, dass Sie es herausgefunden hat. Prüfen Sie, ob meine Antwort enthält alle details. Wenn nicht, können Sie fügen Sie Ihre eigene Antwort für die Zukunft auf.
public URI postForLocation(String url, Object request, Map<String,?> urlVariables) throws RestClientException
Kann ein Spring-controller-Griff multipart-requests, die einfach und bequem mit nur einer handler-Methode? Sie müssen irgendeine Art von resolver -, haben Sie eine?
Ich brauche nicht zu verwenden
Map<String,?> urlVariables
weil ich mich nicht übergeben, variable in der URL.Sie waren richtig!!!! Ich habe nicht alle resolver. Ich habe gerade mit CommonsMultipartResolver und es funktioniert. Posten Sie Kommentare als Antwort und ich werde es akzeptieren. Dank
Ich bin froh, dass Sie es herausgefunden hat. Prüfen Sie, ob meine Antwort enthält alle details. Wenn nicht, können Sie fügen Sie Ihre eigene Antwort für die Zukunft auf.
InformationsquelleAutor TheEwook | 2013-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umgang mit multipart-requests ist ein komplexer Prozess. Es ist nicht so einfach wie das Lesen request-Parameter. Als solche, Frühling verlangt, dass Sie erklären, eine
MultipartResolver
, so dass Sie analysieren können, und behandeln solche Anfragen. Sie können dies tun, in IhremapplicationContext.xml
Datei:Wo
CommonsMultipartResolver
ist die Umsetzung, analysieren Ihre Anfrage und teilen Sie die Teile, so dass Ihr controller kann finden die einfachen request-Parameter und die Datei(en) hochgeladen.InformationsquelleAutor Sotirios Delimanolis