Skip navigation links
  • Overview
  • Package
  • Class
  • Use
  • Tree
  • Deprecated
  • Index
  • Help

Deprecated API

Contents

  • Terminally Deprecated
  • Interfaces
  • Classes
  • Fields
  • Methods
  • Enum Constants
  • Terminally Deprecated Elements
    Element
    Description
    org.apache.struts2.components.Form.evaluateClientSideJsEnablement(String, String, String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true, which derives native HTML5 constraint attributes per field instead.
    org.apache.struts2.components.Form.getValidators(String)
    since 7.4.0, for removal in 8.0.0. Use Form.getFieldValidators(String), which is generically typed and resolves the action's validators once per form rather than per field.
    org.apache.struts2.components.Form.setValidate(String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true instead.
    org.apache.struts2.components.UIBean.getTooltipConfig(UIBean)
    org.apache.struts2.components.UIBean.setJavascriptTooltip(String)
    org.apache.struts2.components.UIBean.setTooltip(String)
    org.apache.struts2.components.UIBean.setTooltipConfig(String)
    org.apache.struts2.components.UIBean.setTooltipCssClass(String)
    org.apache.struts2.components.UIBean.setTooltipDelay(String)
    org.apache.struts2.components.UIBean.setTooltipIconPath(String)
    org.apache.struts2.conversion.StrutsTypeConverterHolder.addMapping(Class, Map<String, Object>)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.containsNoMapping(Class)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.getMapping(Class)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.unknownMappings
    since 7.3.0, unused - superseded by internal concurrent storage. Retained only for binary compatibility with subclasses compiled against earlier versions, and will be removed in a future release.
    org.apache.struts2.conversion.TypeConverterHolder.addMapping(Class, Map<String, Object>)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function) which stores the built mapping itself.
    org.apache.struts2.conversion.TypeConverterHolder.containsNoMapping(Class)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function) which returns an empty map for classes known to have no mapping.
    org.apache.struts2.conversion.TypeConverterHolder.getMapping(Class)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function), which resolves and caches the mapping in one call instead of requiring a check-then-act at the call site.
    org.apache.struts2.dispatcher.mapper.Restful2ActionMapper
    since 7.4.0, this legacy mapper predates the Struts REST plugin, which is the maintained way to build REST-style applications with Struts. Scheduled for removal in the next major release.
    org.apache.struts2.dispatcher.mapper.RestfulActionMapper
    since 7.4.0, this legacy mapper predates the Struts REST plugin, which is the maintained way to build REST-style applications with Struts. Scheduled for removal in the next major release.
    org.apache.struts2.interceptor.AbstractFileUploadInterceptor.STRUTS_MESSAGES_INVALID_CONTENT_TYPE_KEY
    since 7.3.0, no longer used. The unreachable content-type null-check in acceptFile() that referenced this key was removed as part of the in-memory upload optimization (WW-5413); there is no replacement. This constant will be removed in a future version.
    org.apache.struts2.interceptor.csp.DefaultCspSettings.setLegacyNonceSource(String)
    since 7.4.0, use DefaultCspSettings.setNonceSource(String) instead
    org.apache.struts2.interceptor.I18nInterceptor.AcceptLanguageLocaleHandler
    Since 7.2.0, use AcceptLanguageLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.CookieLocaleHandler
    Since 7.2.0, use CookieLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.LocaleHandler
    org.apache.struts2.interceptor.I18nInterceptor.LocaleHandlerAdapter
    Since 7.2.0, use the top-level handler classes in org.apache.struts2.interceptor.i18n. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.RequestLocaleHandler
    Since 7.2.0, use RequestLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.SessionLocaleHandler
    Since 7.2.0, use SessionLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.parameter.StrutsParameterAuthorizer.hasValidAnnotatedPropertyDescriptor(Object, PropertyDescriptor, long)
    a PropertyDescriptor cannot describe every setter OGNL binds through; use StrutsParameterAuthorizer.findBindableAccessor(java.lang.Object, java.lang.String, long) with StrutsParameterAuthorizer.hasValidAnnotatedMethod(java.lang.Object, java.lang.reflect.Method, long) instead
    org.apache.struts2.ognl.accessor.XWorkObjectPropertyAccessor
    since 7.3.0, this accessor is no longer used by the framework and will be removed in a future version.
    org.apache.struts2.ognl.OgnlReflectionContextFactory
    since 6.8.0, to be removed, see ReflectionContextFactory
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowlistClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowlistPackageNames(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowStaticFieldAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowDefaultPackageAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowProxyMemberAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowProxyObjectAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useEnforceAllowlistEnabled(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageExemptClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageNamePatterns(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageNames(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.StrutsConstants.STRUTS_CSP_NONCE_SOURCE_LEGACY
    since 7.4.0, use StrutsConstants.STRUTS_CSP_NONCE_SOURCE instead
    org.apache.struts2.util.reflection.ReflectionContextFactory
    since 6.8.0, avoid using this interface and any of its implementation, it's going to be removed soon
    org.apache.struts2.util.reflection.ReflectionContextState.DENY_INDEXED_ACCESS_EXECUTION
    since 7.4.0, no replacement. Struts core never sets this key, so it has no effect on framework-driven binding. Indexed property access is now identified by inspecting the target type rather than by trusting a method name prefix, which is the check the key was standing in for. Application or plugin code which sets the key itself does still suppress the fast path, which is why this is deprecated rather than removed outright. Scheduled for removal in 8.0.0 by WW-5699.
    org.apache.struts2.views.jsp.ui.AbstractUITag.setJavascriptTooltip(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltip(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipConfig(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipCssClass(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipDelay(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipIconPath(String)
    org.apache.struts2.views.jsp.ui.FormTag.setValidate(String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true instead.
  • Deprecated Interfaces
    Interface
    Description
    org.apache.struts2.interceptor.I18nInterceptor.LocaleHandler
    org.apache.struts2.util.reflection.ReflectionContextFactory
    since 6.8.0, avoid using this interface and any of its implementation, it's going to be removed soon
  • Deprecated Classes
    Class
    Description
    org.apache.struts2.dispatcher.mapper.Restful2ActionMapper
    since 7.4.0, this legacy mapper predates the Struts REST plugin, which is the maintained way to build REST-style applications with Struts. Scheduled for removal in the next major release.
    org.apache.struts2.dispatcher.mapper.RestfulActionMapper
    since 7.4.0, this legacy mapper predates the Struts REST plugin, which is the maintained way to build REST-style applications with Struts. Scheduled for removal in the next major release.
    org.apache.struts2.interceptor.I18nInterceptor.AcceptLanguageLocaleHandler
    Since 7.2.0, use AcceptLanguageLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.CookieLocaleHandler
    Since 7.2.0, use CookieLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.LocaleHandlerAdapter
    Since 7.2.0, use the top-level handler classes in org.apache.struts2.interceptor.i18n. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.RequestLocaleHandler
    Since 7.2.0, use RequestLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.interceptor.I18nInterceptor.SessionLocaleHandler
    Since 7.2.0, use SessionLocaleHandler. Scheduled for removal in the next release cycle.
    org.apache.struts2.ognl.accessor.XWorkObjectPropertyAccessor
    since 7.3.0, this accessor is no longer used by the framework and will be removed in a future version.
    org.apache.struts2.ognl.OgnlReflectionContextFactory
    since 6.8.0, to be removed, see ReflectionContextFactory
    org.apache.struts2.util.ProxyUtil
    since 7.2, inject ProxyService instead. This class will be removed in a future version.
  • Deprecated Fields
    Field
    Description
    org.apache.struts2.conversion.impl.DefaultObjectTypeDeterminer.DEPRECATED_ELEMENT_PREFIX
    since 7.3.0, use DefaultObjectTypeDeterminer.ELEMENT_PREFIX instead. The Collection_xxx key format has been superseded by Element_xxx since WebWork 2.1.x. Existing -conversion.properties files keep working: DefaultObjectTypeDeterminer.getElementClass(Class, String, Object) still falls back to this prefix.
    org.apache.struts2.conversion.impl.XWorkConverter.CONVERSION_COLLECTION_PREFIX
    since 7.3.0, use DefaultObjectTypeDeterminer.ELEMENT_PREFIX instead. A second public spelling of the same deprecated Collection_ prefix as DefaultObjectTypeDeterminer.DEPRECATED_ELEMENT_PREFIX, unused by the framework itself.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.unknownMappings
    since 7.3.0, unused - superseded by internal concurrent storage. Retained only for binary compatibility with subclasses compiled against earlier versions, and will be removed in a future release.
    org.apache.struts2.interceptor.AbstractFileUploadInterceptor.STRUTS_MESSAGES_INVALID_CONTENT_TYPE_KEY
    since 7.3.0, no longer used. The unreachable content-type null-check in acceptFile() that referenced this key was removed as part of the in-memory upload optimization (WW-5413); there is no replacement. This constant will be removed in a future version.
    org.apache.struts2.StrutsConstants.STRUTS_CSP_NONCE_SOURCE_LEGACY
    since 7.4.0, use StrutsConstants.STRUTS_CSP_NONCE_SOURCE instead
    org.apache.struts2.StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_ENABLE_AOP_SUPPORT
    org.apache.struts2.util.reflection.ReflectionContextState.DENY_INDEXED_ACCESS_EXECUTION
    since 7.4.0, no replacement. Struts core never sets this key, so it has no effect on framework-driven binding. Indexed property access is now identified by inspecting the target type rather than by trusting a method name prefix, which is the check the key was standing in for. Application or plugin code which sets the key itself does still suppress the fast path, which is why this is deprecated rather than removed outright. Scheduled for removal in 8.0.0 by WW-5699.
  • Deprecated Methods
    Method
    Description
    org.apache.struts2.components.Form.evaluateClientSideJsEnablement(String, String, String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true, which derives native HTML5 constraint attributes per field instead.
    org.apache.struts2.components.Form.getValidators(String)
    since 7.4.0, for removal in 8.0.0. Use Form.getFieldValidators(String), which is generically typed and resolves the action's validators once per form rather than per field.
    org.apache.struts2.components.Form.setValidate(String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true instead.
    org.apache.struts2.components.UIBean.getTooltipConfig(UIBean)
    org.apache.struts2.components.UIBean.setJavascriptTooltip(String)
    org.apache.struts2.components.UIBean.setTooltip(String)
    org.apache.struts2.components.UIBean.setTooltipConfig(String)
    org.apache.struts2.components.UIBean.setTooltipCssClass(String)
    org.apache.struts2.components.UIBean.setTooltipDelay(String)
    org.apache.struts2.components.UIBean.setTooltipIconPath(String)
    org.apache.struts2.conversion.StrutsTypeConverterHolder.addMapping(Class, Map<String, Object>)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.containsNoMapping(Class)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.StrutsTypeConverterHolder.getMapping(Class)
    since 7.3.0, use StrutsTypeConverterHolder.computeMappingIfAbsent(Class, Function) instead.
    org.apache.struts2.conversion.TypeConverterHolder.addMapping(Class, Map<String, Object>)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function) which stores the built mapping itself.
    org.apache.struts2.conversion.TypeConverterHolder.containsNoMapping(Class)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function) which returns an empty map for classes known to have no mapping.
    org.apache.struts2.conversion.TypeConverterHolder.getMapping(Class)
    since 7.3.0, use TypeConverterHolder.computeMappingIfAbsent(Class, Function), which resolves and caches the mapping in one call instead of requiring a check-then-act at the call site.
    org.apache.struts2.interceptor.CookieInterceptor.populateCookieValueIntoStack(String, String, Map<String, String>, ValueStack)
    since 7.2.0. Override CookieInterceptor.populateCookieValueIntoStack(String, String, Map, ValueStack, Object) instead so cookie writes are authorized by ParameterAuthorizer. The default 5-arg implementation calls this method after the authorization gate, so existing overrides continue to receive only authorized cookies.
    org.apache.struts2.interceptor.csp.DefaultCspSettings.setLegacyNonceSource(String)
    since 7.4.0, use DefaultCspSettings.setNonceSource(String) instead
    org.apache.struts2.interceptor.parameter.StrutsParameterAuthorizer.hasValidAnnotatedPropertyDescriptor(Object, PropertyDescriptor, long)
    a PropertyDescriptor cannot describe every setter OGNL binds through; use StrutsParameterAuthorizer.findBindableAccessor(java.lang.Object, java.lang.String, long) with StrutsParameterAuthorizer.hasValidAnnotatedMethod(java.lang.Object, java.lang.reflect.Method, long) instead
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowlistClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowlistPackageNames(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useAllowStaticFieldAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowDefaultPackageAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowProxyMemberAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useDisallowProxyObjectAccess(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useEnforceAllowlistEnabled(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageExemptClasses(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageNamePatterns(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.ognl.SecurityMemberAccess.useExcludedPackageNames(String)
    since 7.4.0, configuration is parsed once per container by SecurityMemberAccessConfig. This method still mutates this instance and is retained for tests and existing callers; it will be removed in Struts 8.0.0. The container no longer invokes this setter.
    org.apache.struts2.util.ProxyService.resolveTargetMember(Member, Object)
    since 7.1, use ProxyService.resolveTargetMember(Member, Class) instead.
    org.apache.struts2.util.ProxyUtil.getHibernateProxyTarget(Object)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.ProxyUtil.isHibernateProxy(Object)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.ProxyUtil.isHibernateProxyMember(Member)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.ProxyUtil.isProxy(Object)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.ProxyUtil.isProxyMember(Member, Object)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.ProxyUtil.resolveTargetMember(Member, Object)
    since 7.1, use ProxyUtil.resolveTargetMember(Member, Class) instead. Since 7.2, inject ProxyService instead.
    org.apache.struts2.util.ProxyUtil.ultimateTargetClass(Object)
    since 7.2, inject ProxyService instead
    org.apache.struts2.util.StrutsProxyService.resolveTargetMember(Member, Object)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setJavascriptTooltip(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltip(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipConfig(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipCssClass(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipDelay(String)
    org.apache.struts2.views.jsp.ui.AbstractUITag.setTooltipIconPath(String)
    org.apache.struts2.views.jsp.ui.FormTag.setValidate(String)
    since 7.4.0, for removal in 8.0.0. The generated client-side validator only ever covered fields rendered by a nested Struts tag (WW-2975). Use the html5 theme with struts.ui.html5.constraints=true instead.
  • Deprecated Enum Constants
    Enum Constant
    Description
    org.apache.struts2.conversion.annotations.ConversionRule.COLLECTION
    since 7.3.0, use ConversionRule.ELEMENT instead. The Collection_xxx key format has been superseded by Element_xxx since WebWork 2.1.x; both are handled identically by the engine, and Element_xxx additionally covers the values of a Map.

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