有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java struts2字符串中的数据剪切发送到jsp

我又遇到这个问题了

我的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。。。当我调试控制器时,这些数据是完整的,但当我试图在jsp中显示这些数据时。我只有部分数据。我没有任何错误/调试日志

知道怎么检查/修理吗

我的应用程序:(struts2,jsp)一切都来自appfuse基本struts原型


共 (1) 个答案

  1. # 1 楼答案

    我个人的出发点是PropertyTag的来源,从那里开始遵循代码

    在本例中,从PropertyTag开始。你可以看到它扩展了ComponentTagSupport,这反过来又扩展了StrutsBodyTagSupport

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

    作为Struts方面的专家,我不敢说这是一个实现缺陷;它应该根据要打印的value计算缓冲区大小。不幸的是,事实并非如此。所以我认为没有简单的解决方法

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

    这可能不是你想要的答案,但我希望这至少能帮助你理解你所处的困境