Class InstantiatingNullHandler
- All Implemented Interfaces:
NullHandler
Provided that the key ReflectionContextState.CREATE_NULL_OBJECTS
is in the action context with a value of
true (this key is set only during the execution of the ParametersInterceptor
), OGNL expressions that have caused a
NullPointerException will be temporarily stopped for evaluation while the system automatically tries to solve the
null references by automatically creating the object.
The following rules are used when handling null references:
- If the property is declared exactly as a
Collection
orList
, then an ArrayList shall be returned and assigned to the null references. - If the property is declared as a
Map
, then a HashMap will be returned and assigned to the null references. - If the null property is a simple bean with a no-arg constructor, it will simply be created using the
ObjectFactory.buildBean(java.lang.Class, java.util.Map)
method.
For example, if a form element has a text field named person.name and the expression person evaluates to null, then this class will be invoked. Because the person expression evaluates to a Person class, a new Person is created and assigned to the null reference. Finally, the name is set on that object and the overall effect is that the system automatically created a Person object for you, set it by calling setUsers() and then finally called getUsers().setName() as you would typically expect.
- Author:
- Matt Ho, Patrick Lightbody
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionMethod called on target returned null.Property in target evaluated to null.void
void
void
-
Constructor Details
-
InstantiatingNullHandler
public InstantiatingNullHandler()
-
-
Method Details
-
setObjectTypeDeterminer
-
setReflectionProvider
-
setObjectFactory
-
nullMethodResult
public Object nullMethodResult(Map<String, Object> context, Object target, String methodName, Object[] args) Description copied from interface:NullHandler
Method called on target returned null.- Specified by:
nullMethodResult
in interfaceNullHandler
- Parameters:
context
- contexttarget
- target objectmethodName
- method nameargs
- arguments- Returns:
- object
-
nullPropertyValue
Description copied from interface:NullHandler
Property in target evaluated to null. Property can be a constant String property name or a DynamicSubscript.- Specified by:
nullPropertyValue
in interfaceNullHandler
- Parameters:
context
- contexttarget
- target objectproperty
- property- Returns:
- object
-