CFMismatch? имя компонента в аргументе и файл определения для компонента не совпадают - PullRequest
0 голосов
/ 20 января 2010

Я получаю следующую ошибку при доступе к

The "MARKETPRICELISTVIEW" argument passed to the "GetMarketPriceList" function is not of type "app.market.wallst.MarketPrice.MarketPriceListView."
If the component name is specified as a type of this argument, its possible that a definition file for the component cannot be found or is not accessible.

Функция выглядит следующим образом: -

    <cffunction name="GetMarketPriceList" returntype="void" access="public" output
    ="false"> 
            <cfargument name="MarketPriceListView" 
type="app.market.wallst.MarketPrice.MarketPriceListView" required="true"> 
                <cfargument name="Task" type="app.market.wallst.Task.Task"> 
                <cfargument name="LoginView" type="app.market.wallst.Login.LoginView"> 
                   <cfscript>  
                    arguments.MarketPriceListView.SetMarketPriceListQuery
                         (variables.MarketPriceDataDelegate.GetMarketPriceList
                           (arguments.MarketPriceListView.GetMarketPrice()));      
                    arguments.Task.SetError(false); 
                    arguments.LoginView; 
                   </cfscript> 
                </cffunction>

Пожалуйста, помогите, что это за ошибка?

Ответы [ 2 ]

1 голос
/ 21 января 2010

Ваша функция: GetMarketPriceList () требует аргумент с именем MarketPriceListView, который является экземпляром файла CFC, расположенного здесь: /app/market/wallst/MarketPrice/MarketPriceListView.cfc

Надеюсь, у вас есть какой-то предыдущий набор переменных, который создает экземпляр этого cfc, так что вы можете передать его в GetMarketPriceList ();

Код, который вызывает эту функцию, на самом деле важнее для ответа на этот вопрос, чем сама функция.

Просто догадываюсь, но это должно быть что-то вроде этого (если вы не используете Coldspring)

<!--- Review MarketPriceListView to see if it has a required init() method --->
<cfset mpListView = createObject("component", "app.market.wallst.MarketPrice.MarketPriceListView")>

<!--- Guessing how these are implemented, probably require init() and Task and LoginView are probably functions rather than the CFC file. --->
<cfset task = createObject("component","app.market.wallst.Task.Task")>
<cfset loginView = createObject("component","app.market.wallst.Login.LoginView")>

<cfset result = GetMarketPriceList( mpListView, task, loginView)>

Еще одна догадка при реализации:

<cfscript>
    // init the components:
    marketPrice  = createObject("component", "app.market.wallst.MarketPrice").init();
    taskManager  = createObject("component","app.market.wallst.Task").init();
    loginManager = createObject("component","app.market.wallst.Login").init();

    // call the appropriate methods to get the data - example implementation
    mpListView  = marketPrice.MarketPriceListView( symbol=form.symbol );
    task        = taskManager.task( task=form.task );
    loginView   = loginManager.loginView( view=form.view );

    result = GetMarketPriceList( mpListView, task, loginView );
</cfscript>
1 голос
/ 20 января 2010

Первое, что я заметил, это то, что в вашем объявлении типа для аргумента есть пробел.

Передается ли объект в CFC или объекте другого типа? Если он получен, мой опыт показывает, что CF не всегда понимает тип правильно.

...