com.opensymphony.xwork2.conversion.impl
Class InstantiatingNullHandler
java.lang.Object
com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler
- All Implemented Interfaces:
- NullHandler
public class InstantiatingNullHandler
- extends Object
- implements 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
or List
, 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.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CREATE_NULL_OBJECTS
public static final String CREATE_NULL_OBJECTS
- Deprecated. Use
ReflectionContextState.CREATE_NULL_OBJECTS
instead
- See Also:
- Constant Field Values
LOG
private static final Logger LOG
reflectionProvider
private ReflectionProvider reflectionProvider
objectFactory
private ObjectFactory objectFactory
InstantiatingNullHandler
public InstantiatingNullHandler()
setReflectionProvider
public void setReflectionProvider(ReflectionProvider prov)
setObjectFactory
public void setObjectFactory(ObjectFactory fac)
nullMethodResult
public Object nullMethodResult(Map context,
Object target,
String methodName,
Object[] args)
- Description copied from interface:
NullHandler
- Method called on target returned null.
- Specified by:
nullMethodResult
in interface NullHandler
nullPropertyValue
public Object nullPropertyValue(Map context,
Object target,
Object property)
- 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 interface NullHandler
createObject
private Object createObject(Class clazz,
Object target,
String property,
Map context)
throws Exception
- Throws:
Exception
Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.