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.ObjectWrapperAndUnwrapper

      `CANT_UNWRAP_TO_TARGET_CLASS`

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

      `BEANS_WRAPPER, DEFAULT_WRAPPER, SIMPLE_WRAPPER`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### StrutsBeanWrapper

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

  - ### Method Detail

    - #### getModelFactory

          protected freemarker.ext.util.ModelFactory getModelFactory(Class clazz)

      Overrides:
        `getModelFactory` in class `freemarker.ext.beans.BeansWrapper`

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.