gpt4 book ai didi

java - iframe 不显示 struts 操作类中的对象

转载 作者:行者123 更新时间:2023-12-01 16:09:48 26 4
gpt4 key购买 nike

这是我之前问题的延续,该问题的框架不正确。

我在 jsp 类中有一个 iframe,它在其 src 中调用 struts2 操作类,但不是在框架内打开文件而是下载文件,

内部文件 TempContentPage.jsp:

<s:form>
<iframe id="displayFrame" src="ContentPage.action" width="1000" height="500" FRAMEBORDER="0" value="1">&nbsp;</iframe>
</s:form>

这里是action类ContentPage.java中的execute方法

public Stringexecute() 抛出 IOException {

    Session session = SessionUtil.getSession();
session.beginTransaction();
ServletOutputStream out = res.getOutputStream();
ContentBase cb = new ContentBase();


String quer = "from ContentBase cb where cb.parentType=? AND cb.parentId=? ";
Query query = session.createQuery(quer);

query.setParameter(0, "FILE");
query.setParameter(1, "1");

list = (ArrayList) query.list();

if (null != list && !((java.util.ArrayList) list).isEmpty()) {
cb = (ContentBase) ((java.util.ArrayList) list).get(0);
}

docContent = cb.getFile();
res.reset();
res.setContentType("application/msword");
res.setHeader("Content-disposition", "inline; filename=\"scovr.doc\"");


try{
InputStream in = docContent.getBinaryStream();

//InputStream iStream = new ByteArrayInputStream (docContent.getBytes(0, (int) docContent.length()));

int length = (int) docContent.length();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);

}

player.setIsRead(true);

in.close();

}catch(Exception e){

e.printStackTrace();
}

out.flush();
return SUCCESS;
}

这是 struts.xml 映射

<action name="ContentPage" class="com.zoran.action.ContentPage">
<result name="success" type="stream">
<param name="contentType">application/msword</param>
<param name="inputName">in</param>
<param name="bufferSize">1024</param>
<param name="contentDisposition">inline</param>
</result>

<result name="error" >/pages/ContentPage.jsp</result>
<result name="input" >/pages/ContentPage.jsp</result>
</action>

我想在 iframe 范围内打开文件,请帮助我(我从 Balusc 获得了宝贵的输入),因此对此代码进行了更改:)。

谢谢,阿迪亚

最佳答案

啊,您正在使用 Struts。那么我建议寻找真正的Struts文件下载示例here .

但是,您还依赖于所使用的客户端(网络浏览器)是否支持内联打开 MS Word 文档。我从未见过或尝试过它,但认为(如果)支持仅限于 MSIE(并且不会感到惊讶)。最好使用 PDF,因为有非常广泛的网络浏览器支持来内联显示它。您可以使用iTextOOo将 DOC 转换为 PDF。

或者,如果客户端需要能够编辑文档并将其保存回服务器,那么内联打开它就没有意义,只会让客户端更加困惑,因为没有除了将其保存到本地磁盘文件系统然后再次手动上传到服务器端之外,还有一种将完全相同的文档“保存”在服务器端的方法。

关于java - iframe 不显示 struts 操作类中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com