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

标签 java html jsp struts2 struts

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

我在 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/

相关文章:

java - 是否可以在 Apache Ant build.xml 文件中将字符串拆分为多行?

JavaScript:如何使 div 的样式依赖于在选择框中选择的选项?

html - Css 下拉菜单 z-index 问题

javascript - 使用 ajax 更新 JSP 页面中的对象

java - 如何从 JSP 文件中的 HTML 表单获取用户输入的数据,并使用 java 类将其输入到 mysql 数据库中?

java - 将 CSS 文件包含到 JSP 中

java - 在 Java 中生成一个随机整数数组,其中每个元素都与其后继和前驱不同

java - 禁用 awt/swing 调试(精细)日志消息

java - 如何在 BoxLayout 中粘到容器顶部

php - swiftmailer 动态附加 Symfony