Вызвать компонентный метод через форму, возвращает Wheels.ViewNotFound

Я часами искал ответ на этот вопрос и так и не смог найти ответ, который мне подходит. Я использовал тот же метод для вызова действий от CFC, но в этом случае он, кажется, не работает.

Это CF9 с cfWheels 1.1.6

У меня есть форма:

    <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

Не удалось найти страницу просмотра для действия addDocument в контроллере Qmadmin.

Действие определенно есть, и с помощью <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, поэтому просто не могу ее зафиксировать.

1 ответ

Оказывается, это может быть связано с какой-то ошибкой кеширования. Первая ссылка на контроллер, который загрузил страницу с используемыми формами controller=qmadmin (строчные буквы) и каким-то образом кэширование предотвращает последующие запросы controller=QmAdmin с работы.

Переключение в режим дизайна на колесах отключило кеширование и оно снова заработало. После этого корректируем начальный вызов контроллера controller=QmAdmin кажется, решил проблему.

Другие вопросы по тегам