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返回同样的错误页面。

这个错误最近才开始发生,这让我认为它一定是导致它的可配置的东西,但我对冷融合相当陌生,所以无法确定它。

4

1 回答 1

1

事实证明,这可能归结为某种缓存错误。对使用所用表单(小写)加载页面的控制器的第一个引用controller=qmadmin以及缓存以某种方式阻止了后续请求controller=QmAdmin的工作。

在轮子中切换到设计模式禁用了缓存,它又开始工作了。之后调整对控制器的初始调用controller=QmAdmin似乎已经解决了这个问题。

于 2014-08-21T08:13:08.110 回答