Я довольно часто использую Ajax (Jquery) для отправки форм на обработку в ColdFusion. Я отправляю форму в CFC, который возвращает результаты и ошибки пользователю через уведомления Ajax.
Формы могут быть довольно большими (подумайте о полных HTML-страницах с дополнительными входными данными) и требуют много логики в CFC для правильной обработки в зависимости от того, какие опции были выбраны в форме.
Поскольку каждая функция в CFC может быть большой (возможно, 1200 строк кода), я получаю от ColdFusion ужасную ошибку «целевое смещение ветвления слишком велико для коротких». Чтобы обойти это, я поместил некоторый код в файл .cfm и использовал <cfinclude>
, чтобы вернуть код обратно в cfc, который «решает» проблему, но я чувствую, что это сбивает с толку, когда я пытаюсь организовать все маленькие фрагменты для связи с конкретным CFC. . Это также может быть неэффективным способом работы.
Я хотел бы знать, как другие пользователи ColdFusion структурируют/обрабатывают формы с помощью CFC, которые выполняют много дополнительных действий при передаче данных формы в базу данных.
Вот некоторые варианты, о которых я подумал:
- Создайте функции «оболочки» для действий «Создать», «Обновить», «Чтение» и «Удалить», в которых не так много кода.
- Внутри функций оболочки
cfinclude
все фрагменты кода по подфункциям из многих других файлов .cfm, чтобы свести код к минимуму. - ИЛИ вызывать другие CFC, которые выполняют подфункции и передают им переменные формы в качестве аргументов.
Варианты выше приведут к тому, что у меня будет такая структура (что мне не нравится):
Article.cfc (CreateArticle, EditArticle etc)
CreateArticle_InsertImage.cfc
CreateArticle_ProcessBodytext.cfc
CreateArticle_InsertUser.cfc
CreateArticle_CheckIfExistingArticle.cfc
EditArticle_UpdateImage.cfc
EditArticle_UpdateBodytext.cfc
EditArticle_CheckIfExistingArticle.cfc
В конечном итоге я бы создал новые CFC для каждой функции, а не сами по себе классы/объекты. Вместо этого они могут быть файлами CFM (и использовать <cfinclude>
, но кажется странным делать это вот так. Есть ли альтернативный/лучший/стандартный способ, о котором кто-нибудь знает?
if
или циклов, и Java просто сходит с ума от этого. - person James A Mohler   schedule 10.01.2018cftransaction
, создающих эту проблему. - person rrk   schedule 10.01.2018<cftransaction>
, но это не сработало. Единственным способом было перекачать код в файлы .cfm, а затем восстановить их вместе в CFC, используя<cfinclude>
. Это заставило меня задуматься о том, что может быть лучший/модульный/oop способ сделать это. - person volume one   schedule 10.01.2018