我有一个控制器,它有一个上传文件的方法,在客户端使用dojo Uploader类,它支持除IE以外的所有浏览器的ajax上传,并上传带有IFrame的IE。 结果是一个JSON对象,但是当使用IFrame机制时,JSON必须包含在< textarea>中:
@RequestMapping(value = "/documentation/{appId:.+}/", method = RequestMethod.POST)
@ResponseBody
public String uploadDocumentation(HttpServletRequest request,
@PathVariable String appId, @RequestParam("uploadedfile") MultipartFile file)
throws Exception {
// ....
String json = JsonUtils.jsonify(map);
if (accepts(request, "application/json")) {
return json;
} else if (accepts(request, "text/html")) {
return "<textarea>" + json + "</textarea>";
} else {
throw new GinaException("Type de retour non supporté");
}
我想知道是否有办法在框架中注册这种编码机制,这样我们就必须返回一个对象,然后让框架完成剩下的工作。
提前致谢。
答案 0 :(得分:0)
为了记录,我只是添加了第二种方法:
@RequestMapping(value = "/documentation/{appId:.+}/", method = RequestMethod.POST,
produces="application/json")
@ResponseBody
public UploadResult uploadDocumentation(@PathVariable String appId,
@RequestParam("uploadedfile") MultipartFile file) throws Exception {
...
return new UploadResult(filename);
}
@RequestMapping(value = "/documentation/{appId:.+}/", method = RequestMethod.POST,
produces="text/html")
@ResponseBody
public String uploadDocumentationIE(@PathVariable String appId,
@RequestParam("uploadedfile") MultipartFile file) throws Exception {
UploadResult obj = uploadDocumentation(appId, file);
String json = JsonUtils.jsonify(obj);
return "<textarea>" + json + "</textarea>";
}