Package freemarker.template
Interface ObjectWrapper
-
- All Known Subinterfaces:
ObjectWrapperAndUnwrapper,ObjectWrapperWithAPISupport,RichObjectWrapper
- All Known Implementing Classes:
BeansWrapper,DefaultObjectWrapper,SimpleObjectWrapper
public interface ObjectWrapperMaps Java objects to the type-system of FreeMarker Template Language (see theTemplateModelinterfaces). Thus this is what decides what parts of the Java objects will be accessible in the templates and how.For example, with a
BeansWrapperboth the items ofMapand the JavaBean properties (the getters) of an object are accessible in template uniformly with themyObject.foosyntax, where "foo" is the map key or the property name. This is because both kind of object is wrapped byBeansWrapperinto aTemplateHashModelimplementation that will callMap.get(Object)or the getter method, transparently to the template language.
-
-
Field Summary
Fields Modifier and Type Field Description static ObjectWrapperBEANS_WRAPPERDeprecated.UseBeansWrapperBuilder.build()instead; this instance isn't read-only and thus can't be trusted.static ObjectWrapperDEFAULT_WRAPPERDeprecated.UseDefaultObjectWrapperBuilder.build()instead; this instance isn't read-only and thus can't be trusted.static ObjectWrapperSIMPLE_WRAPPERDeprecated.No replacement as it was seldom if ever used by anyone; this instance isn't read-only and thus can't be trusted.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description TemplateModelwrap(java.lang.Object obj)Makes aTemplateModelout of a non-TemplateModelobject, usually by "wrapping" it into aTemplateModelimplementation that delegates to the original object.
-
-
-
Field Detail
-
BEANS_WRAPPER
@Deprecated static final ObjectWrapper BEANS_WRAPPER
Deprecated.UseBeansWrapperBuilder.build()instead; this instance isn't read-only and thus can't be trusted.AnObjectWrapperthat exposes the object methods and JavaBeans properties as hash elements, and has custom handling for JavaMap-s,ResourceBundle-s, etc. It doesn't treatNode-s and Jython objects specially, however. As of 2.3.22, usingDefaultObjectWrapperwith itsincompatibleImprovementsproperty set to 2.3.22 (or higher) is recommended instead.
-
DEFAULT_WRAPPER
@Deprecated static final ObjectWrapper DEFAULT_WRAPPER
Deprecated.UseDefaultObjectWrapperBuilder.build()instead; this instance isn't read-only and thus can't be trusted.The legacy default object wrapper implementation, focusing on backward compatibility and out-of-the W3C DOM wrapping box extra features. SeeDefaultObjectWrapperfor more information.
-
SIMPLE_WRAPPER
@Deprecated static final ObjectWrapper SIMPLE_WRAPPER
Deprecated.No replacement as it was seldom if ever used by anyone; this instance isn't read-only and thus can't be trusted.Object wrapper that usesSimpleXXXwrappers only. It behaves like theDEFAULT_WRAPPER, but for objects that it does not know how to wrap as aSimpleXXXit throws an exception. It makes no use of reflection-based exposure of anything, which may makes it a good candidate for security-restricted applications.
-
-
Method Detail
-
wrap
TemplateModel wrap(java.lang.Object obj) throws TemplateModelException
Makes aTemplateModelout of a non-TemplateModelobject, usually by "wrapping" it into aTemplateModelimplementation that delegates to the original object.- Parameters:
obj- The object to wrap into aTemplateModel. If it already implementsTemplateModel, it should just return the object as is. If it'snull, the method should returnnull(however,BeansWrapper, has a legacy option for returning a null model object instead, but it's not a good idea).- Returns:
- a
TemplateModelwrapper of the object passed in. To support un-wrapping, you may consider the return value to implementWrapperTemplateModelandAdapterTemplateModel. The default expectation is that theTemplateModelisn't less thread safe than the wrapped object. If theObjectWrapperreturns less thread safe objects, that should be clearly documented, as it restricts how it can be used, like, then it can't be used to wrap "shared variables" (Configuration.setSharedVaribles(Map)). - Throws:
TemplateModelException
-
-