我又遇到这个问题了...
所以我的 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/