3

次のスニペットのCFINVOKEARGUMENT行が原因で例外が発生しています。

<CFOUTPUT query="cfmx.Messages"><CFSILENT>
<CFINVOKE component="com_VUI_RemoveIllegalChars" method="formatString" returnvariable="cfmx.formattedMessage">
   <CFINVOKEARGUMENT name="inString" value="#TTSText#">
</CFINVOKE>
</CFSILENT>

例外の正確なテキストは次のとおりです。

タイプcoldfusion.runtime.NoOperScopeのオブジェクトをcoldfusion.runtime.ApplicationScopeにキャストできません。互換性のないタイプにキャストできません。これは通常、Javaのプログラミングエラーを示していますが、設計とは異なる方法で外部オブジェクトを使用しようとしたことを意味する場合もあります。coldfusion.runtime.NoOperScopeをcoldfusion.runtime.ApplicationScopeにキャストすることはできません

ノート:

  • cfmx.Messagesは、CFPROCRESULTで返されるオブジェクトであり、CFDUMPを介して検査すると、期待されるデータが含まれています。
  • com_VUI_RemoveIllegalCharsはまったく変更されていません
  • TTSTextは、結果セットの有効な列です
  • 私の疑いは、これがColdFusion構成の問題である可能性があることです。

この問題を引き起こしている可能性のあるものに光を当てることができる人に事前に感謝します。

編集:例外ログからの完全なダンプ:

"Error"、 "jrpp-11"、 "01/06/09"、 "15:11:37" ,, "coldfusion.runtime.NoOperScopeをcoldfusion.runtime.ApplicationScopeにキャストできません含まれている、または処理されているファイルの特定のシーケンスは:C:\ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm、line:30 "java.lang.ClassCastException:coldfusion.runtime.NoOperScopeはcoldfusion.runtime.RuntimeServiceImpl.getFullTagName(RuntimeServiceImpl。 java:625)at coldfusion.runtime.TemplateProxyFactory.getFullName(TemplateProxyFactory.java:1082)at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:184)at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:157)at coldfusion.runtime.TemplateProxyFactory。cfproc_playsitestatus2ecfm1824676963.runPage(C:\ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm:30)atcoldfusion.runtime.CfJspPage.invoke(CfJspPage.java:192)atcoldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:366)atcoldfusion.filter.CfincludeFilter.invoke (CfincludeFilter.java:65)atcoldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)atcoldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)atcoldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java: 40)coldfusion.filter.PathFilter.invoke(PathFilter.java:86)でcoldfusionで。filter.LicenseFilter.invoke(LicenseFilter.java:27)at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)at coldfusion.filter.BrowserFilter.invoke (BrowserFilter.java:38)atcoldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)atcoldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)atcoldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java: 22)coldfusion.CfmServlet.service(CfmServlet.java:175)at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)atcoldfusion.monitor。 coldfusion.bootstrapのevent.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)。BootstrapFilter.doFilter(BootstrapFilter.java:46)at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)at jrun.servlet.FilterChain.service(FilterChain.java:101)at jrun.servlet.ServletInvoker.invoke(ServletInvoker .java:106)at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:284)at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)at jrunx.scheduler.ThreadPool $ DowntownMetrics.invokeRunnable(ThreadPool.java:320)at jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable(ThreadPool.java )jrunx.scheduler.ThreadPool $ UploadMetrics.invokeRunnable(ThreadPool.java:266)atjrunx。Scheduler.WorkerThread.run(WorkerThread.java:66)

上記のコードスニペットには、proc_playsitestatus.cfmの28〜32行目が含まれています

編集:

TTSテキストの値は、この場合は「テストのメッセージは」です。

com_VUI_RemoveIllegalCharsのソース:

<CFCOMPONENT displayname="Format a string for use in VoiceXML" hint="returns a string formatted for voiceXML" output="yes">
    <CFFUNCTION name="formatString" access="public" returntype="string" displayname="Format String" hint="Formats String for VoiceXML">
        <cfargument name="inString" type="string" required="true" displayname="input string" hint="pass in the string to be formatted">
        <CFSET v.messageWithoutChars = replace(inString, "<", "", "all")>
        <CFSET v.messageWithoutChars = replace(v.messageWithoutChars, ">", "", "all")>
        <CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "&", "and", "all")>
        <CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "\.+", ".", "all")>
        <CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "!", ".", "all")>
        <CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "\", " ", "all")>
        <CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "/", " ", "all")>
        <CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "[[:punct:]]{2,}", " ", "all")>
        <cfreturn v.messageWithoutChars>
    </CFFUNCTION>
</CFCOMPONENT>
4

3 に答える 3

2

その行番号についてよろしいですか?エラーはCFCメソッド自体にあると思います。それを確認して、私が正しければ、CFCメソッドからの行を投稿できますか?

于 2009-01-06T20:12:57.387 に答える
0

com_VUI_RemoveIllegalCharsコンポーネントの内容とTTSText変数の値がなければ、先に進むことはあまりありません。それらを投稿していただけますか?(NDA などの理由でできない場合があることは理解しています)

于 2009-01-07T13:15:39.583 に答える