4

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()メソッドを削除し、basic()、none()、relaxed()などの標準のJSoupホワイトリストの1つを使用すると、コードは完全に実行されます。他のオンラインの例からわかる限り、これはaddTags()メソッドを使用するための正しい構文です。

私はColdFusion内でJavaオブジェクトを使用するのはかなり新しいので、これは私を困惑させました。

どんな助けでも大歓迎です。

ありがとう、マイケル。

4

1 に答える 1

6

この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は配列構文のみをサポートします。したがって、Javaオブジェクトをcfdumpすると、クラス名の後に角かっこが表示されます。これは、引数が配列であることを示しています。

     method:  addTags( java.lang.String[] )  // array of strings
于 2012-09-10T16:37:18.247 に答える