Package org.apache.struts2.views.freemarker

# Class StrutsBeanWrapper

java.lang.Object
freemarker.ext.beans.BeansWrapper
org.apache.struts2.views.freemarker.StrutsBeanWrapper

All Implemented Interfaces:
  `freemarker.template.ObjectWrapper`, `freemarker.template.ObjectWrapperAndUnwrapper`, `freemarker.template.utility.ObjectWrapperWithAPISupport`, `freemarker.template.utility.RichObjectWrapper`, `freemarker.template.utility.WriteProtectable`

public class StrutsBeanWrapper extends freemarker.ext.beans.BeansWrapper

The StrutsBeanWrapper extends the default FreeMarker BeansWrapper and provides almost no change in functionality, except for how it handles maps. Normally, FreeMarker has two modes of operation: either support for friendly map built-ins (?keys, ?values, etc) but only support for String keys; OR no special built-in support (ie: ?keys returns the methods on the map instead of the keys) but support for String and non-String keys alike. Struts provides an alternative implementation that gives us the best of both worlds.

It is possible that this special behavior may be confusing or can cause problems. Therefore, you can set the struts.freemarker.wrapper.altMap property in struts.properties to false, allowing the normal BeansWrapper logic to take place instead.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class freemarker.ext.beans.BeansWrapper

  `freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision, freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput`

- ## Field Summary

  ### Fields inherited from class freemarker.ext.beans.BeansWrapper

  `EXPOSE_ALL, EXPOSE_NOTHING, EXPOSE_PROPERTIES_ONLY, EXPOSE_SAFE`

  ### Fields inherited from interface freemarker.template.ObjectWrapper

  `BEANS_WRAPPER, DEFAULT_WRAPPER, SIMPLE_WRAPPER`

  ### Fields inherited from interface freemarker.template.ObjectWrapperAndUnwrapper

  `CANT_UNWRAP_TO_TARGET_CLASS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StrutsBeanWrapper(boolean altMapWrapper, freemarker.template.Version incompatibleImprovements)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected freemarker.ext.util.ModelFactory`
  `getModelFactory(Class clazz)`

  ### Methods inherited from class freemarker.ext.beans.BeansWrapper

  `checkModifiable, clearClassIntrospecitonCache, clearClassIntrospectionCache, coerceBigDecimal, coerceBigDecimals, coerceBigDecimals, finalizeConstruction, finetuneMethodAppearance, getDefaultDateType, getDefaultInstance, getDefaultZeroArgumentNonVoidMethodPolicy, getEnumModels, getExposureLevel, getIncompatibleImprovements, getInstance, getMemberAccessPolicy, getMethodAppearanceFineTuner, getOuterIdentity, getPreferIndexedReadMethod, getRecordZeroArgumentNonVoidMethodPolicy, getStaticModels, getTreatDefaultMethodsAsBeanMembers, getUseCache, invokeMethod, isClassIntrospectionCacheRestricted, isExposeFields, isSimpleMapWrapper, isStrict, isWriteProtected, newInstance, normalizeIncompatibleImprovementsVersion, readField, removeFromClassIntrospectionCache, setDefaultDateType, setDefaultZeroArgumentNonVoidMethodPolicy, setExposeFields, setExposureLevel, setMemberAccessPolicy, setMethodAppearanceFineTuner, setMethodsShadowItems, setNullModel, setOuterIdentity, setPreferIndexedReadMethod, setRecordZeroArgumentNonVoidMethodPolicy, setSimpleMapWrapper, setStrict, setTreatDefaultMethodsAsBeanMembers, setUseCache, toPropertiesString, toString, tryUnwrapTo, unwrap, unwrap, wrap, wrap, wrapAsAPI, writeProtect`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### StrutsBeanWrapper

    public StrutsBeanWrapper(boolean altMapWrapper, freemarker.template.Version incompatibleImprovements)

- ## Method Details

  - ### getModelFactory

    protected freemarker.ext.util.ModelFactory getModelFactory(Class clazz)
    Overrides:
      `getModelFactory` in class `freemarker.ext.beans.BeansWrapper`