我正在尝试通过 Web 界面验证某些文件的内容,并使用响应来启用/禁用其他一些功能……例如保存按钮。我已经了解了提交和文件处理( stub ),但我似乎无法让我的回复正常工作。
问题:响应时试图让用户下载包含响应内容的文件。我只想将响应传递给要处理的成功函数。
JS函数代码:
function validateCopybook() {
//submit values.
console.log("validating");
if (this.getForm().isValid()) {
this.getForm().submit({
url : 'batch/validateCopybook.json',
waitMsg : 'Validating...',
success : function(form, action) {
this.msg('Success', 'Processed file on the server');
}
});
}
}
服务器端代码:
public ModelAndView validateCopybook(HttpServletRequest request, HttpServletResponse response) throws Exception
{
// Check whether we're dealing with a multipart request
String contentHeader = request.getHeader("content-type");
boolean isMultipart = (contentHeader != null && contentHeader.indexOf("multipart/form-data") != -1);
if (isMultipart == false)
{
return Helper.errorResponse("not multipart");
}
else
{
DefaultMultipartHttpServletRequest reqM = (DefaultMultipartHttpServletRequest) request;
MultiValueMap<String, MultipartFile> fileMap = reqM.getMultiFileMap();
MultipartFile copyIn = fileMap.get("copy-path-in").get(0);
MultipartFile copyOut = fileMap.get("copy-path-out").get(0);
}
System.out.println(response.getContentType());
response.setContentType("application/json");
ModelAndView mav = Helper.successResponse("success");
return mav;
}
返回响应:
ModelAndView: reference to view with name 'json'; model is {model={data={"success":true,"info":"success","dataLength":0,"data":[]}}}
有什么想法吗?
最佳答案
好吧,我没有正确设置响应 header
response.setContentType("application/json");
还不够。
MappingJacksonJsonView view = new MappingJacksonJsonView();
view.setContentType("text/html");
Map<String, Object> responseMap = new HashMap<String, Object>();
responseMap.put("success", true);
ModelAndView mav = new ModelAndView(view, responseMap);
工作正常。
关于java - ExtJS 文件上传响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485292/