The action #request.failedAction# failed.
' ); } writeOutput( '#exception.message#' ); } writeOutput( '#exception.detail# (#exception.type#)
' ); dumpException(exception); } private struct function findImplicitAndExplicitSetters( any cfc ) { var baseMetadata = getMetadata( cfc ); var setters = { }; // is it already attached to the CFC metadata? if ( structKeyExists( baseMetadata, '__fw1_setters' ) ) { setters = baseMetadata.__fw1_setters; } else { var md = { extends = baseMetadata }; do { md = md.extends; var implicitSetters = false; // we have implicit setters if: accessors="true" or persistent="true" if ( structKeyExists( md, 'persistent' ) && isBoolean( md.persistent ) ) { implicitSetters = md.persistent; } if ( structKeyExists( md, 'accessors' ) && isBoolean( md.accessors ) ) { implicitSetters = implicitSetters || md.accessors; } if ( structKeyExists( md, 'properties' ) ) { // due to a bug in ACF9.0.1, we cannot use var property in md.properties, // instead we must use an explicit loop index... ugh! var n = arrayLen( md.properties ); for ( var i = 1; i <= n; ++i ) { var property = md.properties[ i ]; if ( implicitSetters || structKeyExists( property, 'setter' ) && isBoolean( property.setter ) && property.setter ) { setters[ property.name ] = 'implicit'; } } } } while ( structKeyExists( md, 'extends' ) ); // cache it in the metadata (note: in Railo 3.2 metadata cannot be modified // which is why we return the local setters structure - it has to be built // on every controller call; fixed in Railo 3.3) baseMetadata.__fw1_setters = setters; } // gather up explicit setters as well for ( var member in cfc ) { var method = cfc[ member ]; var n = len( member ); if ( isCustomFunction( method ) && left( member, 3 ) == 'set' && n > 3 ) { var property = right( member, n - 3 ); setters[ property ] = 'explicit'; } } return setters; } private void function frameworkTrace( string message, string subsystem = '', string section = '', string item = '' ) { if ( variables.framework.trace ) { if ( isDefined( 'session._fw1_trace' ) && structKeyExists( session, '_fw1_trace' ) ) { request._fw1.trace = session._fw1_trace; structDelete( session, '_fw1_trace' ); } arrayAppend( request._fw1.trace, { tick = getTickCount(), msg = message, sub = subsystem, s = section, i = item } ); } } private void function frameworkTraceRender() { if ( variables.framework.trace && arrayLen( request._fw1.trace ) ) { var startTime = request._fw1.trace[1].tick; var font = 'font-family: verdana, helvetica;'; writeOutput( '