我有一个格式很好的“ JSP文档”(“ JSP in XML”),当生成网页并将其发送给用户时,一些换行符被删除了。
现在真正奇怪的部分:显然,“主” .jsp总是将其 所有 换行符删除,但是对于主.jsp中包含的任何后续.jsp,换行符似乎都是随机删除的(有些在那,有些则没有)。
例如,如果我正在查看Firefox提供的网页并要求 “查看源代码” ,那么我将看到生成的内容。
那么,什么决定了何时/如何保留/删除换行符呢?
这只是我编造的一个示例…您可以强迫.jsp来提供此服务吗:
<body><div id="page"><div id="header"><div class="title">...
或这个:
<body> <div id="page"> <div id="header"> <div class="title">...
?
我认为已删除换行符以节省带宽,但是如果我要保留换行符怎么办?如果我想保持与.jsp文件中相同的XML缩进怎么办?
这可行吗?
编辑
按照skaffman的建议,我看了一下生成的.java文件,“主要”文件没有很多 out.write文件, 但是没有一个书写标签或换行符。与该文件相反,我从该主.jsp中包含的所有文件都有很多行,例如:
out.write("\t...\n");
因此,我想我的问题仍然完全一样:是什么决定了如何在输出中包含/删除制表符/空格/换行符?
根据JSP规范:
JSP.6.2.3语义模型 … 为了清楚地说明空白的处理,我们遵循XSLT规范的结构。处理JSP文档的第一步是识别文档的节点。 然后,将所有只有空格的文本节点从文档中删除; 唯一的例外是jsp:text元素中的节点,它们逐字保留。生成的节点的解释如以下各节所述。模板数据要么直接传递到响应,要么通过(标准或自定义)操作进行调解。
…
为了清楚地说明空白的处理,我们遵循XSLT规范的结构。处理JSP文档的第一步是识别文档的节点。 然后,将所有只有空格的文本节点从文档中删除; 唯一的例外是jsp:text元素中的节点,它们逐字保留。生成的节点的解释如以下各节所述。模板数据要么直接传递到响应,要么通过(标准或自定义)操作进行调解。
因此,如果要保留空格,则需要在中包装所需的部分<jsp:text>。
<jsp:text>