Mic*_*ael 4 java coldfusion jsoup
我试图使用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"))>
Run Code Online (Sandbox Code Playgroud)
我已经抛弃了Whitelist对象,并且存在添加标签方法.如果我删除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 ))>
Run Code Online (Sandbox Code Playgroud)
编辑:
据我可以从其他在线示例中看到,这是正确的语法
为了澄清,这是正确的语法 - 对于java.在java中,您可以使用数组或此语法传入可变数量的参数:addTags("tag1", "tag2", ...).但是,CF仅支持数组语法.因此,如果你cfdump java对象,你会在类名后面看到方括号,表示参数是一个数组:
method: addTags( java.lang.String[] ) // array of strings
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |