【问题标题】:JSF 1.2 response capture including resourcesJSF 1.2 响应捕获,包括资源
【发布时间】:2013-02-06 14:11:48
【问题描述】:
我正在使用带有 RichFaces 的 JSF 1.2。是否可以模仿 Web 浏览器客户端的“另存为”?更准确地说,我想在页面上添加一个“下载 zip”。目的是生成一个 zip 存档,其中包含 HTML 生成的页面以及所有必要的文件,以便以正确的布局打开该页面。
我过去通过HttpResponseWrapper 成功捕获了HTML 页面。
但是一旦页面包含 RichFaces 组件,就需要一些 JS 和图像才能正确显示。我怎样才能将这些资源添加到 zip 中?
【问题讨论】:
标签:
jsf
resources
richfaces
wrapper
【解决方案1】:
使用像 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 解析器。