小编典典

JSP文档/ JSPX:是什么决定如何在输出中除去制表符/空格/换行符?

jsp

我有一个格式很好的“ 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");

因此,我想我的问题仍然完全一样:是什么决定了如何在输出中包含/删除制表符/空格/换行符?


阅读 480

收藏
2020-06-08

共1个答案

小编典典

根据JSP规范

JSP.6.2.3语义模型

为了清楚地说明空白的处理,我们遵循XSLT规范的结构。处理JSP文档的第一步是识别文档的节点。 然后,将所有只有空格的文本节点从文档中删除;
唯一的例外是jsp:text元素中的节点,它们逐字保留。
生成的节点的解释如以下各节所述。模板数据要么直接传递到响应,要么通过(标准或自定义)操作进行调解。

因此,如果要保留空格,则需要在中包装所需的部分<jsp:text>

2020-06-08