1

在我的 Java Web 方法应用程序中,我正在选择一个文件并下载它。当下载窗口关闭时,我将控件定向回父页面。我通过创建一个IPortletURL调用来实现它,将BasePortletPageBean.createRenderURL()它的基本 URL 设置为我想要重定向的 portlet 的别名。然后调用FacesContext重定向方法。它在 Web 方法 8.0 中运行良好,我在 Windows XP 机器上开发了它。现在我将相同的项目导入到安装了 Windows 7 的 web 方法 8.2 机器,但现在它不工作了。请帮助我。

 public String downloadMaster() {


    List<Object> selectedRows = getFnamesProvider2().getSelectedRows();

    if (getFnamesProvider2().getSelectedRows() != null
            && getFnamesProvider2().getSelectedRows().size() != 0) {

        for (Iterator iterator = selectedRows.iterator(); iterator
                .hasNext();) {

            com.webmethods.caf.FileNames details = (com.webmethods.caf.FileNames) iterator
                    .next();


            System.out.println("Iterator Output!!!!!!!!!!!!!!!!!!!!!!!"
                    + details.toString());
            FileInputStream fileInputStream = null;
            OutputStream out = null;
            try {

                String filename = "C:/SoftwareAG/MWS/Projects/"
                        + getProjName() + "/"
                        + session.getAttribute("folder").toString()
                        + "/search/" + details.getFileName();

                if (response == null) {
                    response = PortalServlet.getCurrentResponse();
                    setResponse(response);
                }
                if (response.getContentType() == null
                        || (!(response.getContentType()
                                .equalsIgnoreCase("APPLICATION/DOWNLOAD")))) {
                    if (response == null) {
                        response = PortalServlet.getCurrentResponse();
                    }
                    getResponse().setContentType("APPLICATION/DOWNLOAD");
                }
                response.setHeader("Content-Disposition", "attachment"
                        + "filename=" + details.getFileName());

                File fileToDownload = new File(filename);

                fileInputStream = new FileInputStream(fileToDownload);
                response.setContentLength(fileInputStream.available());
                out = response.getOutputStream();
                response.setHeader("Content-Disposition",
                        "attachment;filename=" + details.getFileName());

                int i;
                while ((i = fileInputStream.read()) != -1) {
                    out.write(i);
                }
                fileInputStream.close();
                out.close();

                List<Object> selRows = getFnamesProvider2()
                        .getSelectedRows();



            } catch (Exception e) // file IO errors
            {
                e.printStackTrace();
            } finally {

                try {

                    IPortletURL renderURL = createRenderUrl();

                    renderURL.setBaseURL("/kneipp.NewProject");
                    System.out.println("::::::renderURL::::::" + renderURL);

                    getFacesContext().getExternalContext().redirect(
                            renderURL.toString());



                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



            }


        }
    }

    return OUTCOME_OK;

}
4

1 回答 1

0

确保您始终使用完整路径,Webmethods 8.2 也需要 url 或任何资源(如图像)的完整路径。这可能是您的问题的原因。

于 2013-01-11T18:38:38.320 回答