CまたはPerlのsprintfに似たColdFusionで何かをしたい。私はこの 答えを見つけました、それは私が探しているもののようです。しかし、私はそれを動作させることができません。
これが私が試していることです:
<cftry>
<cfset firstName="John">
<cfset output=createObject("java","java.lang.String").format("Hello, %s!", firstName)>
<cfcatch type="any">
<cfdump var="#cfcatch#" expand="false">
</cfcatch>
<cftry>
そして、これが私が得るものです:
cfcatch.Message:フォーマットメソッドが見つかりませんでした。
cfcatch.Detail:指定されたメソッド名と引数タイプのメソッドがないか、ColdFusionが確実に解読できない引数タイプでformatメソッドがオーバーロードされています。ColdFusionは、提供された引数に一致する0個のメソッドを検出しました。これがJavaオブジェクトであり、メソッドが存在することを確認した場合は、javacast関数を使用してあいまいさを減らします。
これはオーバーロードされたメソッドなので、提案どおりに実行し、引数にJavaCastを使用しました。
<cfset output=createObject("java","java.lang.String").format(JavaCast('string', "Hello, %s!"), firstName)>
<cfset output=createObject("java","java.lang.String").format("Hello, %s!", JavaCast('string', firstName))>
<cfset output=createObject("java","java.lang.String").format(JavaCast('string', "Hello, %s!"), JavaCast('string', firstName))>
毎回同じエラーが発生しました。
StringクラスvalueOfで別の静的メソッドを試しましたが、正常に機能しました。
編集: 私はすでにコメントを見ました、そして私はそれらにどのように応答するかわかりません、しかし多分私はここで説明するべきです。上に示したのは、私がやろうとしていることの非常に単純化された例です。目標は、フォーマット文字列を使用して1つの場所で多くのフォーマットを提供し、変数の束をフォーマットして出力したり、出力時にフォーマットしたりする代わりに、変数のリストを渡すことです。formatメソッドを使用して、必要な出力に一致する一連のフォーマット文字列を作成する予定です。次に、クエリに対してcfloopまたはcfoutputを実行し、この1つのメソッドを内部で実行して、必要な出力を取得します。DateFormat、NumberFormat、Left、Rightなどはありません。これが機能しない場合は、プランBです。
私はColdFusion9.01、Windows 7、Java1.6.0_22を実行しています。
ありとあらゆる助けを大いに感謝します。