Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 空白/冷融合_Coldfusion_Whitespace_Cfml - Fatal编程技术网

Coldfusion 空白/冷融合

Coldfusion 空白/冷融合,coldfusion,whitespace,cfml,Coldfusion,Whitespace,Cfml,停止ColdFusion输出的空白的正确方法是什么 我知道有cfcontent和cfsetting启用cfoutputOnly。正确的方法是什么?就标签而言,有两种方法 在administrator中有一个“启用空白管理”的设置 如果和都不能满足您的要求,那么您可能对这个问题设计过度了 当您纯粹出于美观考虑而提问时,我的建议是:忽略空格,它不会造成任何伤害。我发现,即使使用各种可能的方法来消除空格,您的代码仍可能有一些不需要的空格或换行符。如果您仍然遇到这种情况,您可能需要牺牲格式良好的代码来获

停止ColdFusion输出的空白的正确方法是什么


我知道有
cfcontent
cfsetting启用cfoutputOnly
。正确的方法是什么?

就标签而言,有两种方法

在administrator中有一个“启用空白管理”的设置

如果
都不能满足您的要求,那么您可能对这个问题设计过度了


当您纯粹出于美观考虑而提问时,我的建议是:忽略空格,它不会造成任何伤害。

我发现,即使使用各种可能的方法来消除空格,您的代码仍可能有一些不需要的空格或换行符。如果您仍然遇到这种情况,您可能需要牺牲格式良好的代码来获得所需的输出

例如,而不是:

<cfprocessingdirective suppressWhiteSpace = "true">
<cfquery ...>
 ...
 ...
 ...
</cfquery>
<cfoutput>
 Welcome to the site #query.userName#
</cfoutput>
</cfprocessingdirective>

...
...
...
欢迎访问网站#query.userName#
您可能需要编写以下代码:

<cfprocessingdirective suppressWhiteSpace = "true"><cfquery ...>
 ...
 ...
 ...
</cfquery><cfoutput>Welcome to the site #query.UserName#</cfoutput></cfprocessingdirective>

...
...
...
欢迎访问网站#query.UserName#
这不是CF添加空白,而是在格式化CF时添加空白


HTH

您可以通过访问ColdFusion输出缓冲区来修改ColdFusion输出。最近在我们的用户组会议()上演示了这一点


out=getPageContext().getOut().getString();
newOutput=REreplace(out,'regex','all');

执行此操作的最佳位置是Application.cfc onRequestEnd()。您的结果可能是一行HTML,然后发送到浏览器。使用您的web服务器进行GZip,您将大大减少带宽。

或者,您可以确保您的整个页面存储在一个变量中,并且所有这些处理都在cfsilent标记中完成。e、 g

<cfsilent>
    <!-- some coldfusion -->
    <cfsavecontent variable="pageContent">
        <html>
            <!-- some content -->
        </html>
    </cfsavecontent>
    <!-- reformat pageContent if required -->
</cfsilent><cfoutput>#pageContent#</cfoutput>

#页面内容#

最后,您可以在生成页面内容后但在输出之前执行任何附加处理,例如,使用正则表达式删除附加空白或某些代码整理。

如果使用CFC,这里有一个提示

如果您不希望您的方法生成任何输出,请在
中使用
output=“false”
(仅当您使用CF9脚本样式时不需要)。这将消除许多不需要的空白。

除了
。您可以使用它删除文档开头的空白

HTML5文档将以如下方式开始:

<cfcontent type="text/html; charset=utf-8" reset="true" /><!doctype html>

如果您有权访问服务器,并且希望在每个页面上实现它,请搜索并安装trimflt.jar。它是一个JavaServlet过滤器,在发送之前会删除所有空格和换行符。将jar放到CF的/WEB-INF/lib目录中,编辑WEB.xml文件以添加过滤器。它还可以配置为删除注释、排除文件或扩展名以及保留特定字符串。已经运行了几年,没有任何问题。一个定下来就忘了的解决方案

同样,还有tagand@Travis-应该是“即用2p抑制”s@NicCottrell谢谢你纠正了一个5岁的o型。不幸的是,
edit
在旧的注释中不可用。空白比修改干净的代码更麻烦。doctype前的空格将导致验证错误。表面上看起来很美观,但如果你的客户想要/需要有效的站点,实际上这是一个问题。纯文本web服务返回之前或之后的空白也会造成不便。XML返回中的前导空格可能会导致错误,例如“prolog中不允许的内容”。这两种结果都要求用户操作结果以使其可用。在我看来,这是一个草率的网络服务。@Travis:是的,没错。尽管如此,这些特殊问题仍然可以用可用的方法完美地解决。混合使用CF和HTML所产生的空白问题要小得多,可以忽略,IMHO。在大多数情况下,我同意可以忽略它。然而,我有一些客户坚持严格验证(有趣的是,即使是他的最新网站看起来也像是1991年的)。当试图这样做时,空格会造成严重破坏;不仅在doctype之前,而且在整个文档中。大部分不是因为CF,而是因为编码者的代码中有空格,请参阅我对答案的贡献。您试图解决的问题是什么?额外的空白本身并没有造成真正的伤害,至少据我所知是这样。与HTML输出代码中的一些额外空白相比,具有可读性和易于理解的良好格式的代码必须更加重要。来吧,看看托马拉克回答中的评论。在大多数情况下是的,但不是绝对需要的时候,杰。这是一个可行的解决方案,当空白将弄糟您的系统,CF不处理您输入的空白。doctype前的空格将导致验证错误。表面上看起来很美观,但如果你的客户想要/需要有效的站点,实际上这是一个问题。纯文本web服务返回之前或之后的空白也会造成不便。XML返回中的前导空格可能会导致错误,例如“prolog中不允许内容”。这
(
<cfcontent type="text/html; charset=utf-8" reset="true" /><!doctype html>
<cfcontent reset="yes" type="text/xml; charset=utf-8" /><CFOUTPUT>#VariableHoldingXmlDocAsString#</CFOUTPUT>
<cffunction name="getMyName" access="public" returntype="string" output="no">
  <cfreturn "Seybsen" />
</cffunction>