Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.opensymphony.xwork2.util
Class InstantiatingNullHandler

    java.lang.Object
      com.opensymphony.xwork2.util.InstantiatingNullHandler

All Implemented Interfaces:
  ognl.NullHandler

    public class InstantiatingNullHandler

extends Object
implements ognl.NullHandler

Provided that the key `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.

Field Summary
`static String` | `CREATE_NULL_OBJECTS`
`private static Log` | `LOG`

Constructor Summary
`InstantiatingNullHandler()`

Method Summary
`private Object` | `createObject(Class clazz, Object target, String property, Map context)`
`Object` | `nullMethodResult(Map context, Object target, String methodName, Object[] args)`
`Object` | `nullPropertyValue(Map context, Object target, Object property)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CREATE_NULL_OBJECTS

    public static final String CREATE_NULL_OBJECTS

See Also:
  Constant Field Values

### LOG

    private static final Log LOG

Constructor Detail

### InstantiatingNullHandler

    public InstantiatingNullHandler()

Method Detail

### nullMethodResult

    public Object nullMethodResult(Map context,
                                   Object target,
                                   String methodName,
                                   Object[] args)

  Specified by:
    `nullMethodResult` in interface `ognl.NullHandler`

### nullPropertyValue

    public Object nullPropertyValue(Map context,
                                    Object target,
                                    Object property)

  Specified by:
    `nullPropertyValue` in interface `ognl.NullHandler`

### createObject

    private Object createObject(Class clazz,
                                Object target,
                                String property,
                                Map context)
                         throws Exception

  Throws:
    `Exception`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.