gpt4 book ai didi

java - 如何修复 Coldfusion cfcontent 中的属性验证错误(java.string.lang 不支持变量类型)?

转载 作者:行者123 更新时间:2023-11-30 11:40:01 26 4
gpt4 key购买 nike

我有一个 Coldfusion 应用程序,我在其中生成 HTML 服务器端、压缩、手动 gzip 并作为 cfcontent 发回。

看起来像这样:

<cfsavecontent variable="renderedResults">
<cfoutput><p>Hello World</p></cfoutput>
</cfsavecontent>

<cfscript>
compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(13), "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(09), "ALL");
</cfscript>

<cfif cgi.HTTP_ACCEPT_ENCODING contains "gzip">
<cfinvoke component="services.utils" method="gzip" stringToZip="#compressedHTML#" returnvariable="compressedHTML"></cfinvoke>
<cfheader name="Content-Encoding" value="gzip">
</cfif>

<cfheader name="Content-Type" value="text/html; charset=ISO-8859-1">
<cfheader name="Content-Length" value="#len(compressedHTML)#" >
<cfcontent reset="no" variable="#compressedHTML#" />
<cfreturn />

我的 GZIP 实用函数:

<cfscript>
var result="";
var text=createObject("java","java.lang.String").init(arguments[1]);
var dataStream=createObject("java","java.io.ByteArrayOutputStream").init();
var compressDataStream=createObject("java","java.util.zip.GZIPOutputStream").init(dataStream);
compressDataStream.write(text.getBytes());
compressDataStream.finish();
compressDataStream.close();

if(arrayLen(arguments) gt 1){
result=binaryEncode(dataStream.toByteArray(),arguments[2]);
}else{
result=dataStream.toByteArray();
}
return result;
</cfscript>

我在所有页面上都运行了它,大多数时候它运行良好,无论页面是直接请求还是通过 AJAX 请求。

但有时我会收到以下错误:

Diagnose: Attribute validation error for tag cfcontent. java.lang.String is not a supported variable type. The variable is expected to contain binary data. <br>The error occurred on line 338. Browser: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

这是cfcontent线。

问题:
这可能是浏览器请求的页面不支持 GZIP 或禁用了 GZIP 吗?因为这样 HTML 只会被压缩而不是二进制编码?

如果是这样,是否可以解决我必须对压缩的 HTML 进行二进制编码的问题?

如果两者都是错误的,请尽可能说明一些问题?

最佳答案

尝试将您的变量转换为二进制,然后再使用 ToBinary() 将其传递给 cfcontent函数,像这样...

<cfcontent reset="no" variable="#ToBinary(compressedHTML)#" />

关于java - 如何修复 Coldfusion cfcontent 中的属性验证错误(java.string.lang 不支持变量类型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com