Расширение application.cfc в подкаталоге

Я думаю, что вы ищете List.containsAll () .

List.equals () возвращает true, только если оба списка содержат одинаковые элементы в одинаковом порядке .

Если вы хотите проверить, что все элементы присутствуют в обоих списках:

if(Arrays.asList(source).containsAll(mylist)){
   build2 += (char)(65 + offset);
}

13
задан Community 23 May 2017 в 10:29
поделиться

3 ответа

Следующий код работает на меня. Одна вещь, которую я заметил, хотя то, что application.cfc, кажется, кэшируется, так изменения в родительском приложении cfc, не могла бы быть отражена. Я обошел это путем выполнения тривиального изменения в дочернем приложении cfc.

<cfcomponent output="false">
        <cfset variables.higherPath = ReReplace(GetMetaData(this).name,"\.[^\.]+\.[^\.]+$","") />
        <cfset variables.extendApp = CreateObject("component", "#variables.higherPath#.Application") />

        <cfloop item="variables.key" collection="#variables.extendApp#">
            <cfif IsCustomFunction(variables.extendApp[variables.key])>
                <cfset super[variables.key] = variables.extendApp[variables.key]>
            <cfelse>
                <cfset this[variables.key] = variables.extendApp[variables.key] >
            </cfif>
        </cfloop>
        <cffunction name="onApplicationStart" output="false">
            <cfset super.onApplicationStart() />
        </cffunction>
4
ответ дан 1 December 2019 в 22:08
поделиться

У Sean Corfield есть запись в блоге, объясняющая, как расширить корневой Application.cfc.

Ниже релевантная информация, скопированная с той записи.


Вот Ваш корень CFC/Application.cfc:

<cfcomponent>

    <cfset this.name = "cf7app" />
    <cfset this.sessionmanagement = true />

</cfcomponent>

Вот Ваш прокси CFC/ApplicationProxy.cfc:

<cfcomponent extends="Application">
</cfcomponent>

Это абсолютно пусто и служит просто для создания псевдонима для корня/Application.cfc. Вот Ваш подкаталог CFC/app/Application.cfc:

<cfcomponent extends="ApplicationProxy">

    <cffunction name="onSessionStart">
        <cfoutput><p>app.Application.onSessionStart()</p></cfoutput>
        <cfset session.counter = 0 />
    </cffunction>

    <cffunction name="onRequestStart">
        <cfoutput><p>app.Application.onRequestStart()</p></cfoutput>
        <cfdump label="application" var="#application#"/>
    </cffunction>

</cfcomponent>

Корень каждого отдельного сайта должен иметь свое собственное Основное Приложение:

/site1/Application.cfc
/site2/Application.cfc
/site3/Application.cfc

Все эти приложения являются отдельными отдельными приложениями ни с чем совместно использованным между ними.

Если какой-либо из этих отдельных сайтов должен иметь подприложения, то должен быть ApplicationProxy.cfc alonside Ведущее устройство,

e.g.
/site1/ApplicationProxy.cfc
/site2/ApplicationProxy.cfc

Затем для каждого подприложения у Вас есть то, которое расширяет прокси:

e.g.
/site1/subA/Application.cfc
/site1/subB/Application.cfc
/site2/subA/Application.cfc
16
ответ дан 1 December 2019 в 22:08
поделиться

Я знаю, что это старая тема, но я нашел способ сделать это (который, похоже, работал в моем тестировании) без использования сопоставлений администратора CF.

Вы можете сделать это, добавив отображение для каждого приложения в вашем дочернем Application.cfc, используя расширенный относительный путь:

<cfcomponent extends="cms.Application" output="false">
<cfset this.mappings["/cms"] = expandPath(getDirectoryFromPath(getCurrentTemplatePath()) & "../../../../")>
<cflog text="#getMetadata(this).extends.path#">
</cfcomponent>

Да, это кажется немного хакерским, но, похоже, работает.

3
ответ дан 1 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: