0

我将 JSF 1.2 与 RichFaces 一起使用。是否可以模仿 Web 浏览器客户端的“另存为”?更准确地说,我想在页面上添加一个“下载 zip”。目的是生成一个 zip 存档,其中包含 HTML 生成的页面以及所有必要的文件,以便以正确的布局打开该页面。

我过去成功地通过HttpResponseWrapper. 但是一旦页面包含 RichFaces 组件,就需要一些 JS 和图像才能正确显示。我怎样才能让这些资源将它们添加到 zip 中?

4

1 回答 1

0

使用像Jsoup这样的 HTML 解析器。它可以通过类似 jQuery 的 CSS 选择器轻松找到 CSS/JS/image 元素,并返回资源 URL,以便您可以单独下载它们。

InputStream input = new URL(url).openStream();
// ... Save webpage itself.

Document document = Jsoup.parse(savedWebPage, "UTF-8", url);

for (Element stylesheet : document.select("link[rel=stylesheet]")) {
    InputStream input = new URL(stylesheet.absUrl("href")).openStream();
    // ... Save individual stylesheet file.
}

for (Element script : document.select("script[src]")) {
    InputStream input = new URL(script.absUrl("src")).openStream();
    // ... Save individual script file.
}

for (Element img : document.select("img[src]")) {
    InputStream input = new URL(img.absUrl("src")).openStream();
    // ... Save individual image file.
}

不考虑 CSS 背景图像。您可以考虑在每个单独的 CSS 文件上使用类似SAC的 CSS 解析器。

于 2013-02-06T14:43:40.260 回答