1

私はこの問題に対する答えを何時間も探していましたが、どこでも自分に合った答えを見つけることができませんでした. 同じ方法を使用して cfc からアクションを呼び出してきましたが、この場合は機能していないようです。

これは cfWheels 1.1.6 を搭載した CF9 です。

私はフォームを持っています:

    <form action="index.cfm?controller=QmAdmin&action=add-document" method="POST" id="addDocument" name="add" onsubmit="return submitForm(this.id);">
            
             <input type="text" id="addDocumentName" name="name" />
             <input type="text" id="addDocumentLink" name="link" />
             <input type="text" id="addDocumentDetails" name="details"/>

             <select name="parentid" id="addDocumentParent">
             </select>
                    
             <input type="submit" name="submit" class="btn" value="Add"/>   
        </form>     

ただし、送信ボタンをクリックしても、QmAdmin.cfc 内のアクションには到達しません。チェックするアクション内にログを追加しましたが、到達しません。次のようなWheelsエラーページが表示されます。

Wheels.ViewNotFound

Qmadmin コントローラーで addDocument アクションのビュー ページが見つかりませんでした。

アクションは間違いなくそこにあり、<cfinvoke component="controllers.QmAdmin" method="addDocument"/>(正しい引数を使用して) 呼び出しを使用すると正常に動作します。

要求されたアクション:

    <cffunction name="addDocument" access="remote">
        <cfargument name="name" type="String">
        <cfargument name="link" type="String">
        <cfargument name="details" type="String">
        <cfargument name="parentid" type="numeric">
    
        <cftry>
            <cfquery name="addDocument">
                INSERT INTO BLANK.DOCUMENTS (ID, NAME, LINK, DETAILS, PARENT)
                VALUES (BLANK.SQ_DOCUMENTS_ID.NEXTVAL,
                   <cfqueryparam value="#name#" cfsqltype="cf_sql_varchar">,
                   <cfqueryparam value="#link#" cfsqltype="cf_sql_varchar">,
                   <cfqueryparam value="#details#" cfsqltype="cf_sql_varchar">,
                   <cfqueryparam value="#parentid#" cfsqltype="cf_sql_numeric">)
            </cfquery>
        <cfcatch type="any">
            <cfset flashInsert(error="An error occured, no changes were made")>
            <cfset redirectTo(controller="qmadmin", action="qmsadmin")>
        </cfcatch>
        </cftry>
    
        <cfset flashInsert(message="Successfully added document")>
        <cfset redirectTo(controller="qmadmin", action="qmsadmin")>
    </cffunction>

私はcoldfusionアドミニストレーターでキャッシュをクリアしようとしました。大文字と小文字を変更し、フォーム呼び出しのフォーマットをQmAdmin.cfc?method=addDocument&arg1=&arg2=などに変更しました。

ブラウザで URL を直接使用すると、同じエラー ページが返されます。

このエラーは最近発生し始めたばかりなので、それを引き起こしているのは設定可能な何かに違いないと思いますが、私はcoldfusionにかなり慣れていないので、特定することはできません.

4

1 に答える 1

1

これは、ある種のキャッシング バグが原因である可能性があります。controller=qmadmin使用されているフォーム(小文字) を含むページをロードしたコントローラーへの最初の参照と、何らかの形でキャッシュが後続の要求controller=QmAdminの動作を妨げています。

ホイールでデザイン モードに切り替えると、キャッシュが無効になり、再び機能し始めました。その後、コントローラーへの最初の呼び出しを調整するとcontroller=QmAdmin、問題が解決したようです。

于 2014-08-21T08:13:08.110 に答える