【问题标题】:ColdFusion and JSoup - The addTags method was not found errorColdFusion 和 JSoup - 找不到 addTags 方法错误
【发布时间】:2012-09-10 15:46:31
【问题描述】:

我正在尝试使用 JSoup 和 ColdFusion 来清理一些 HTML,但遇到以下错误:

找不到 addTags 方法。要么没有具有指定方法名称和参数类型的方法,要么 addTags 方法被 ColdFusion 无法可靠破译的参数类型重载。 ColdFusion 找到 0 个与提供的参数匹配的方法。如果这是一个 Java 对象并且您验证了该方法存在,请使用 javacast 函数来减少歧义。

我的代码如下:

<cfset jsoup = createObject('java','org.jsoup.Jsoup')>
<cfset Whitelist = createObject("java", "org.jsoup.safety.Whitelist")>

<cfset parsedhtml = jsoup.parse(form.contentrichtext)> 
<cfset post = parsedhtml.body().html()>
<cfset post = jsoup.clean(post, Whitelist.none().addTags("span"))>

我已经转储了 Whitelist 对象,并且存在 add Tags 方法。如果我删除 addTags() 方法并使用标准 JSoup 白名单之一,例如 basic()、none() 或 Relax(),则代码运行完美。据我从其他在线示例中可以看出,这是使用 addTags() 方法的正确语法。

我对在 ColdFusion 中使用 Java 对象还很陌生,所以这让我很困惑。

任何帮助将不胜感激。

谢谢, 迈克尔。

【问题讨论】:

  • 另外提一下,我不确定如何在我的代码上下文中实现 JavaCast 函数,以及这是否会有帮助。

标签: java coldfusion jsoup


【解决方案1】:

addTags 方法需要一个字符串数组,而不仅仅是一个字符串。先将值放入数组中:

<!--- create a CF array then cast it as type string[] --->  
<cfset tagArray = javacast("string[]", ["span"]) >
<cfset post = jsoup.clean(post, Whitelist.none().addTags( tagArray ))>

编辑:

据我从其他在线示例中可以看出,这是正确的 语法

为了澄清,正确的语法 - 对于java。在 Java 中,您可以使用数组或以下语法传入 variable number of argumentsaddTags("tag1", "tag2", ...)。但是,CF 只支持数组语法。所以如果你cfdump这个java对象,你会在类名后面看到方括号,这表明参数是一个数组:

     method:  addTags( java.lang.String[] )  // array of strings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多