我是这么在request里取得值:
TargetFile targetFile = (TargetFile) request.getAttribute(TARGET_FILE);
然后这个方法分别在一览画面和详细画面调用过两次,方法如下
public ActionForward execute(ActionMapping mapping, ActionForm aform, HttpServletRequest request,
HttpServletResponse response) throws Exception {
SessionValidator.getAccount(request);
TargetFile targetFile = (TargetFile) request.getAttribute(TARGET_FILE);
if (targetFile == null) {
log.warn("Invalid request for FileDownloadAction");
return mapping.findForward("error");
}
try {
if (StringUtils.isBlank(targetFile.getRepositoryFileId())) {
log.warn("Invalid request for FileDownloadAction: targetFileName is blank: " + targetFile);
return mapping.findForward("error");
}
// Content-Type
String ct = targetFile.getContentType();
if (ct == null) {
ct = FILEDOWNLOAD_OCTET_TYPE;
}
InputStream in = targetFile.getInputStream(); // possibly exception, but never null.
File file = File.createTempFile("dnload", null);
try {
FileUtil.copyFileFromInputStream(in, file);
String uaStr = request.getHeader("User-Agent");
if (StringUtils.contains(uaStr, "iPhone") || StringUtils.contains(uaStr, "iPad")) {
downFileFromIpadOrIphone(ct, file, targetFile.getOriginalFilename(), request, response);
} else {
downFile(ct, file, targetFile.getOriginalFilename(), request, response);
}
} catch (FileNotFoundException e) {
log.error(String.format("TargetFile %s not found", targetFile.getRepositoryFileId()));
} finally {
file.delete();
}
} finally {
//@since 4.0.2
targetFile.closeInputStreamQuietly();
}
return null;
}
问题来了,在一览画面:
在详细画面:
在详细画面那个originalFilename为什么是空啊?