对于我的一个项目,我需要使用JSF 2.0在Web浏览器上显示MS word文档。 Web应用程序包含标题,内容等。应在内容部分动态显示MS Word文档(使用AJAX)。辅助bean读取ms word文档。我可以使用JSF作为独立的应用程序在浏览器上显示MS word文档。但是如果从另一个JSF文件调用它,这将无法工作。有人可以对这个问题有所了解吗?
JSF独立应用程序DiaplayDoc.xhtml。这将在浏览器上显示MS文档。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core">
<f:event type="preRenderView" listener="#{DisplayDoc.downloadDoc}"/>
</html>
我需要从另一个包含其他jsf组件的jsf文件中调用此页面。将执行标题部分,但不执行页脚部分。 (当页脚设置为显示pdf插件或图像时,这可以正常工作。)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h:form id="form1">
<div id="header">
Hello World
</div>
<div id="footer">
<object data="<Project>/DisplayDoc.jsf" type="application/msword" width="100%" height="100%">
</object>
</div>
</h:form>
</h:body>
</html>
bean部分包含
response.reset();
response.setHeader("Content-Type", "application/msword");
response.setHeader("Content-Length", String.valueOf(fFile.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + strFilepath + "\"");
答案 0 :(得分:0)
JSF不可用于此目的。这样,您就可以使用HTML文档类型和二进制DOC内容周围的其他HTML标记来对DOC输出进行格式化。用servlet替换它,让<object data>
指向servlet URL。如有必要,您可以将bean属性作为servlet请求参数传递,如
<object data="docservlet?param1=#{bean.param1}&param2=#{bean.param2}">