I have created a CFC object with these basic properties:

<cfproperty name="ID" type="numeric" default="0">
    <cfproperty name="category" type="Category">
    <cfproperty name="subcategory" type="string">
    <cfproperty name="sscategory" type="SubSubCategory">
    <cfproperty name="ladiesonly" type="boolean">
    <cfproperty name="status" type="boolean">

With an init() method like this:

<cffunction name="init" access="public" output="false" returntype="struct">
      <cfargument name="ID" type="numeric" default="0">
      <cfscript>
      instance = structNew();
      instance.ID = 0;
      instance.category = createobject('component','Category');
instance.subcategory = "";
      instance.sscategory = createobject('component','SubSubCategory');
      instance.ladiesonly = 0;
instance.status = 0;
      </cfscript>

      <cfif arguments.ID neq 0>
           <cfquery name="subcat" maxrows="1"
datasource="#application.config.DSN#">
            select intBoutCatID as catID,
    txtBoutSubCat as subcategory,
intSSCatID as sscatID,
blLadies as ladiesonly,
blActive as status
            from tblboutsubcat
            where intBoutSubCatID = <cfqueryparam
value="#arguments.ID#" cfsqltype="cf_sql_integer">
           </cfquery>

            <cfif subcat.recordcount eq 1>
                <cfscript>
                instance.ID = arguments.ID;
                instance.category = instance.category.get(subcat.catID);
   instance.subcategory = subcat.subcategory;
                instance.sscategory =
instance.sscategory.get(subcat.sscatID);
                instance.ladiesonly = subcat.ladiesonly;
                instance.status = subcat.status;
                </cfscript>
           </cfif>
      </cfif>

      <cfreturn this>
   </cffunction>

As you can see two of the properties of the object are other custom
objects (category and subsubcategory). I always thought this was
possible, but I'm new at this so...

Anyway, I'm creating a backend editor for populating the db. In the
"Edit" form, I create an instance like so:

<cfscript>
formSubCat =
CreateObject("component","#application.config.CFCOMPONENTS_PREFIX#com.seacrets.boutique.subcategory").init(#url.id#);
</cfscript>

This does create the object. I am able to populate various fields of the
form like this:

<input type="hidden" name="id"
value="#htmleditformat(trim(formSubCat.getID()))#" />

My trouble comes when I try to access one of the object properties that
is, itself, a custom object. For instance, I call a method to get the
category object's ID:

<select class="boxes" name="category">
<option value="">-- --</option>
<cfoutput query="qCats">
<option value="#qCats.ID#"<cfif qCats.ID eq
#trim(formSubCat.getCatID())#> selected</cfif>>#qCats.Name#</option>
</cfoutput>
</select>

This calls the following method in the subcategory CFC:

<cffunction name="getCatID" access="public" output="true"
returntype="numeric">
<cfreturn instance.category.getID()>
</cffunction>

Now, in theory, this should be a no brainer, it should call the getID()
method of the category object that is present in the current instance
from the category CFC. However, I get the following error:

The selected method getID was not found.
Either there are no methods with the specified method name and argument
types, or the method getID is overloaded with arguments types that
ColdFusion can't decipher reliably. If this is a Java object and you
verified that the method exists, you may need to use the javacast
function to reduce ambiguity.

The error occurred in
/home/httpd/seacrets/system/cfcomponents/com/seacrets/boutique/subcategory.cfc:
line 162
Called from /home/httpd/seacrets/secure/editor/_subcat.cfm: line 260
Called from /home/httpd/seacrets/secure/editor/main.cfm: line 93

160 :   </cffunction>
161 :
162 :   <cffunction name="getCatID" access="public" output="true"
returntype="numeric">
163 :    <cfreturn instance.category.getID()>
164 :   </cffunction>

...And then the stack trace stuff. Is this just not possible? Am I off
my rocker here? If I can't do it this way then how should it be done?

Cutter
[Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings] [Donations and Support]

Reply via email to