java - struts2数据切入字符串发送到jsp

标签 java jsp struts2

我又遇到这个问题了...

所以我的 Struts2 应用程序中有字符串数据。这个数据相当大,从html读取36KB数据,代码:

        BufferedReader reader = new BufferedReader(new FileReader("FILE.html"));
        String readData; 
        while( (readData = reader.readLine()) != null) {
            fileData.append(new String(readData.getBytes(),"UTF-8"));
        }
        reader.close();
        fileData.trimToSize();
        this.data2display = fileData.toString();
        this.setData2display(this.data2display.replaceAll("\\s+", " "));

我在 jsp 文件中显示 data2display,只需:

<s:property value="data2display" escape="false" escapeJavaScript="false" />

Aaaaaand...当我调试 Controller 时,这些数据是完整的,但当我尝试在 jsp 中显示它时。我只有部分数据。我没有任何错误/调试日志。

知道如何检查/修复它吗?

我的应用程序:(struts2,jsp)一切都来自appfuse-basic-struts原型(prototype)。

最佳答案

我个人的起点是 PropertyTag 的来源,并从那里开始遵循代码。

在本例中,以 PropertyTag 开头。您会看到它扩展了 ComponentTagSupport ,进而扩展 StrutsBodyTagSupport .

这就是有趣的地方; toString 方法使用 FastByteArrayOutputStream它使用 8192 字节的默认 block 大小(缓冲区)。使用默认构造函数,如 StrutsBodyTagSupport 所做的那样您无法输出包含更多数据的字符串。

由于不是 Struts 专家,我犹豫是否要说这是一个实现错误;恕我直言,它应该根据要打印的值计算缓冲区大小。不幸的是,事实并非如此。所以我认为没有简单的方法可以解决这个问题。

显然,不容易的方法是定义一个小于 8k 字节的字符串数据部分列表,并在 JSP 中迭代该列表,或者仅使用 c:out 或类似的东西。

这可能不是您正在寻找的答案,但我希望这至少能帮助您了解您所遇到的麻烦。

关于java - struts2数据切入字符串发送到jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599658/

相关文章:

java - 开始使用 Java 编程

java - xwork和xwork-core的冲突

java - Struts2中validate和model方法获取属性值的区别

java - Struts2 正则表达式验证负数问题

java - ognl 'in' 语句未按预期运行

java - Spring Social - 完成 OAuth 2 连接时出现异常 : Authorization is required for the operation,

java - JRuby:启动浏览器时 Watir 挂起

java - 动态文件夹创建

java - JDBC和JSP数据库连接

java - 显示其他对象内部的对象值