在jsf页面的文件打开组件 
<h:outputText  value="原文:"/> 
<h:commandLink title="#{Taskprogress.originaltext}" styleClass="uploadFile" action="#{Taskprogress.openOriginalFile}"> 
<h:outputText id="originaltext" value="#{Taskprogress.originaltext}"> </h:outputText> </h:commandLink> 
当我点击链接的时候,跳出文件对话框,执行保存,打开,或者取消操作后,我再保存当面页面,但是又会跳出文件下载对话框,action源码如下: 
public static void openFile(String fileName,String subDir) 

try 

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
if(FacesContext.getCurrentInstance().getResponseComplete())return; 
if (!subDir.equals("")) subDir = subDir + "\\"; 
fileName = request.getRealPath("upload")+"\\" + subDir + fileName; 
java.io.File f = new java.io.File(fileName); 
if (f.exists()&&f.canRead()) 
{ response.setContentType ("application/x-msdownload octet-stream;charset=ISO8859-1"); 
response.setHeader ("Content-Disposition", "attachment;filename=\"" + new String(f.getName().getBytes(), "ISO8859-1") + "\""); 
// response.setContentLength((int) f.length()); 
java.io.BufferedInputStream fileInputStream = new java.io.BufferedInputStream(new java.io.FileInputStream(f)); int i; 
// java.io.OutputStream out = response.getOutputStream(); 
java.io.PrintWriter out = response.getWriter(); 
// out.clearBuffer(); 
while ((i=fileInputStream.read()) != -1) out.write(i); 
fileInputStream.close(); 
out.flush(); 
out.close(); 
FacesContext.getCurrentInstance().responseComplete(); 
} } catch (IOException e) { 
e.printStackTrace(); 
} // String fileType = fileName.substring(fileName.lastIndexOf(".")+1); 
// if (fileType.equals("doc")) 
// openWordFile(fileName); 
// else if  (fileType.equals("xls")) 
// openExcelFile(fileName); 

为什么不能结束本次请求?想半天了,麻烦指点指点!