Rückkehr JSON-Antwort für Spring MVC-Post-request
Habe ich die unten controller-Methode, die das hochladen von Dateien auf meinen server. Ich möchte JSON zurückgeben für Plupload status. Aber die Antwort scheint zu sein, zurück geschickt, da ein Versand eher als json @ResponseBody. Irgendwelche Ideen?
private static final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : \"success\", \"id\" : \"id\"}";
private static final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to upload file.\"}, \"id\" : \"id\"}";
@RequestMapping(method = RequestMethod.POST)
public String uploadItem(@RequestBody MultipartFile file,
@RequestParam String name,
@RequestParam(required = false, defaultValue = "-1") int chunks,
@RequestParam(required = false, defaultValue = "-1") int chunk) {
Media media = new Media();
try {
Path path = Paths.get("/Users/username/Desktop/Test", file.getOriginalFilename());
media.setContentType(file.getContentType());
media.setFileName(file.getOriginalFilename());
media.setFileSize(file.getSize());
media.setFilePath(path.toString());
if (media.getContentType().contains("image")) {
Image image = new Image();
image.setImagePath(path.toString());
imageDao.save(image);
}
byte[] bytes = file.getBytes();
Files.write(path, bytes, StandardOpenOption.CREATE);
mediaDao.save(media);
return RESP_SUCCESS;
} catch (IOException e) {
e.printStackTrace();
}
return RESP_ERROR;
}
}
Wirft die folgende Fehlermeldung:
WARN - No mapping found for HTTP request with URI [/{"jsonrpc" : "2.0", "result" : "success", "id" : "id"}] in DispatcherServlet with name 'cr'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, deine Methode annotiert mit @ResponseBody.
Dies ist, wie Spring-Prüfungen für die Json-Konvertierung:
Frühjahr behandeln Sie die JSON-Konvertierung automatisch.
String
. Die Methode ist annotiert mit@ResponseBody
.@ResponseBody
und nicht als String." Seine original-Antwort enthalten fehlerhaften code zu diesem Effekt. Juned fälschlicherweise glaubt@ResponseBody
ist eine gültige Rückgabe-Typ, was er nicht ist.Methode muss einen Rückgabetyp Zeichenfolge, die getrennt von der Anmerkung (dass das Ergebnis als response-body).
@ResponseBody ist keine Rückkehr geben, oder ein Typ an alle! Es ist eine Anmerkung.
Textlichen Inhalt & syntax vorgeschlagen, die in der vorherigen Antwort ist grob falsch, aber ich gebe ihm Kredit in anderer Hinsicht.
Mein Vorschlag:
@ResponseBody public String uploadItem(..)
entsprichtpublic @ResponseBody String uploadItem(..)
. Die Java-syntax ermöglicht.@ResponseBody
ist eine Anmerkung, keine geben -- so kann es nicht vielleicht sein, das return-Typ der Methode. Aus diesem Grund Juned s Antwort ist eindeutig falsch. Aber danke @SotiriosDelimanolis für Informationen über die Markierung der return-Typ einer Methode, gleichwertig zu Anmerkungen zu der Methode selbst.