2

以下代码在 Coldfusion 10 中与 jSoup 一起使用可以正常工作:

var jsoup = application.jsoup;
var newBody = jsoup.parseBodyFragment(FileRead(expandPath("\default\includes\display_objects\custom\routesmapping\routePageTemplate.cfm")));
var routeBadge = newBody.select(".routeBadge");
routeBadge.append("<img src=""#$.content('decalFileName')#"" />");

在 Coldfusion 2016 上,它在第 4 行出错,java.lang.String 无法转换为 org.jsoup.nodes.Element。

java.lang.ClassCastException:java.lang.String 无法在 Coldfusion.runtime.ArrayUtil.ArrayAppend(ArrayUtil. java:208) 在coldfusion.runtime.CFPage._arrayAppend(CFPage.java:578) 在coldfusion.runtime.CfJspPage.invokeMethodHandle(CfJspPage.ja‌​va:3198) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3155 ) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3072) 在

似乎它使用的是append()在 CF11 中添加的 ColdFusion 成员函数,而不是 jSoupappend()函数。

在这种情况下,如何强制使用 jSoupappend()函数而不是 CFappend()成员函数?

4

1 回答 1

3

归根结底,我永远无法让 jSoup append() 方法在任何版本的 CF11 或 CF2016 上工作。我最终不得不切换到使用 html() 方法,然后将我的新字符串连接到现有内容。

所以而不是:

descList.append("<dt>Booking Status:</dt><dd class = """ & statusClass & 
    """><em>#status#</em></dd>");

我不得不使用:

 descList.html(descList.html() & "<dt>Booking Status:</dt><dd class = """ & 
    statusClass & """><em>#status#</em></dd>");
于 2017-06-08T20:49:11.040 回答