T
- type of data to storeprotected static class ERXDynamicElement.ContextData<T> extends Object
You have to use begin
before first usage of the field and end
at
the end of the cycle to clean up the corresponding stack. Without balanced calls of
begin
and end
very bad things will happen. Thus it is advisable
to use a try-finally (see example below). As you have to make these calls during appendToResponse
,
taleValuesFromRequest
and invokeAction
you should put those calls into
overridden methods of beforeProcessing
and afterProcessing
respectively
to avoid code duplication.
It is advisable too to choose a unique key
, as different component types
will use the same userInfo. It is suggested to use a key composed by the component
and field name (e.g. MyDynamicElement.myField).
The ContextData field itself can and should be declared static as it doesn't store the
value itself, it is only used as an accessor to the value stored within the context.
public static final ContextData<String> myField = new ContextData<>("MyClass.myField");
public void appendToResponse(WOResponse response, WOContext context) {
beforeProcessing(context);
try {
response.appendContentString("Current value: " + myField.value(context));
} finally {
afterProcessing(context);
}
}
public void takeValuesFromRequest(WORequest request, WOContext context) {
beforeProcessing(context);
try {
…
} finally {
afterProcessing(context);
}
}
public WOActionResults invokeAction(WORequest request, WOContext context) {
beforeProcessing(context);
try {
…
} finally {
afterProcessing(context);
}
}
protected void beforeProcessing(WOContext context) {
myField.begin(context, "myValue");
}
protected void afterProcessing(WOContext context) {
myField.end(context);
}
Constructor and Description |
---|
ContextData(String key) |
Modifier and Type | Method and Description |
---|---|
void |
begin(com.webobjects.appserver.WOContext context,
ERXDynamicElement component,
String name)
Push a value from a specific binding onto the stack.
|
void |
begin(com.webobjects.appserver.WOContext context,
T value)
Push a constant value onto the stack.
|
void |
end(com.webobjects.appserver.WOContext context)
Removes the current value from the stack.
|
String |
key()
The key this object uses to store values in the context's
userInfo.
|
void |
setValue(com.webobjects.appserver.WOContext context,
T value)
Replace the current value on the stack with a new value.
|
protected Stack<T> |
stack(com.webobjects.appserver.WOContext context) |
String |
toString() |
T |
value(com.webobjects.appserver.WOContext context)
Returns the current value.
|
public ContextData(String key)
public String key()
public void begin(com.webobjects.appserver.WOContext context, T value)
context
- context of the transactionvalue
- constant valuepublic void begin(com.webobjects.appserver.WOContext context, ERXDynamicElement component, String name)
context
- context of the transactioncomponent
- the current dynamic elementname
- binding namepublic void setValue(com.webobjects.appserver.WOContext context, T value)
context
- context of the transactionvalue
- constant valuepublic T value(com.webobjects.appserver.WOContext context)
context
- context of the transactionpublic void end(com.webobjects.appserver.WOContext context)
context
- context of the transactionCopyright © 2002 – 2020 Project Wonder.