In FW/1 you have the variables.fw.service method to work with in your controllers. This method will run your service’s method and return the results to a key inside the RC scope. Keep in mind, however, these service calls are queued up and not run until the view is called. Why this is done I have no idea, but I’m sure there’s a reason.
Because they are queued, something like this would return a variable not defined error:
variables.fw.service ( 'users.get', 'userRecord' ); variables.fw.service ( 'geographic.getStatesByCountry', 'states', { userID = userRecord.getUserID() );
So after spending some time reading through threads on Google Groups, I determined the old fashioned way is the best way. However there’s a nice feature if you have a bean service defined such as ColdSpring. This feature implicitly sets a property named the same as a defined bean in your XML configuration. For example:
component accessors = true { property usersService; function init ( FW ) { variables.fw = arguments.fw; return this; } void function default ( RC ) { RC.performerRecord = getUsersService().get ( ID = 1 ); variables.fw.service ( 'geographic.getStatesByCountry', 'states', { userID = userRecord.getUserID() ); } }
You don’t need use the fw.service on the last call, but I left it in there … just because.
What happens is FW/1 will look to see if each property defined matches a bean definition. If found it automatically sets the property to the bean. Otherwise you’d normally put something like this into your init:
setUsersService ( application.beanfactory.getBean ( "users" ) );