当前位置: 首页 > 面试题库 >

ColdFusion和JSoup-找不到addTags方法错误

淳于哲
2023-03-14
问题内容

我正在尝试将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"))>

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

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

任何帮助将不胜感激。

谢谢,迈克尔。


问题答案:

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可以传递一个可变的参数数目使用任一阵列或此语法:addTags("tag1", "tag2", ...)。但是,CF仅支持数组语法。因此,如果cfdump java对象,则将在类名后面看到方括号,这表明参数是一个数组:

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


 类似资料:
  • 问题内容: 我似乎无法从我的新手开始,我在这里搜索了答案,但似乎无法解决问题。我希望有人有一个简单的解决方案。提前致谢。 这是错误: MainActivity.java AndroidManifest.xml activity_main.xml StartSearch.java 问题答案: 问题出在您的方法签名中 它应该只有一个参数,也就是一个。 更改为 显然可以是你希望它是什么,但你应该让一些有

  • 错误:Einstein类中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)或JavaFX应用程序类必须扩展JavaFX.application.application 我怎么才能修好这个?

  • 我得到一个错误: 错误:在类testPackage.Method1中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)或JavaFX应用程序类必须扩展JavaFX.application.application“ 该计划是:

  • 嗨。我刚到爪哇。我正试图写一个继承程序,得到这个错误。 错误:在类myPackage.inheritage中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)或JavaFX应用程序类必须扩展JavaFX.application.application

  • 我是刚开始使用gradle的,我遇到了一个构建错误,但我并不真正理解这个错误。我的项目只是一个空壳,有目录结构,没有java源代码。这是我的root build.gradle文件 当我执行gradle build命令时,生成失败,因为它不知道带有以下消息的testCompile方法: