Apple WebObjects 3.5 User Manual
Page 119

Objects and State
119
// Java DodgeLite Main.java
ImmutableVector models, prices, types;
MutableVector selectedModels, selectedPrices, selectedTypes;
String model, price, type;
public Main() {
super();
java.util.Enumeration en;
Application woApp = (Application)application();
en = woApp.modelsDict().elements();
models = new MutableVector();
while (en.hasMoreElements())
((MutableVector)models).addElement(en.nextElement());
en = woApp.typesDict().elements();
while (en.hasMoreElements())
((MutableVector)types.addElement(en.nextElement());
prices = woApp.prices();
}
// WebScript DodgeLite Main.wos
id models, model, selectedModels;
id prices, price, selectedPrices;
id types, type, selectedTypes;
- init {
id anApplication = [WOApplication application];
[super init];
models = [[anApplication modelsDict] allValues];
types = [[anApplication typesDict] allValues];
prices = [anApplication prices];
return self;
}
The
selectedModels
,
selectedPrices
, and
selectedTypes
instance variables are bound to
the
selections
attributes of the three WOBrowsers and so will contain the
user’s selections when the Display Cars button is clicked.
When a user starts a session of the DodgeLite application, the Main
component’s initialization method is invoked, initializing the component’s
instance variables from data accessed through the application object. From
this point on, the Main component and its instance variables become part
of the state stored for that user’s session of the DodgeLite application.
When the session is released, the component is also released. However,
there are other techniques that allow you to control resource allocation on a
component basis, as you’ll see later in this chapter.
As with the session state, a component’s state is accessible to other objects
within the same session. As the result of a user’s action, for example, it’s
quite common for one component to create the component for the next
page and set its state. Looking again at the DodgeLite application, consider
what happens when the user makes a selection in the first page and clicks
Display Cars. The
displayCars
method in the Main component is invoked: