类 AbstractNamedValueResolvingStrategy

java.lang.Object
cn.taketoday.web.bind.resolver.AbstractNamedValueResolvingStrategy
所有已实现的接口:
ParameterResolvingStrategy
直接已知子类:
CookieParameterResolver, CookieParameterResolver.CookieCollectionParameterResolver, CookieParameterResolver.CookieValueAnnotationParameterResolver, ExpressionValueMethodArgumentResolver, MatrixParamParameterResolvingStrategy, ParameterResolvingRegistry.RequestAttributeMethodArgumentResolver, PathVariableMethodArgumentResolver, RequestHeaderMethodArgumentResolver, RequestParamMethodArgumentResolver, ServletParameterResolvers.ForCookie, ServletParameterResolvers.ForCookieCollection, ServletParameterResolvers.ForServletContextAttribute, WebSessionAttributeParameterResolver

public abstract class AbstractNamedValueResolvingStrategy extends Object implements ParameterResolvingStrategy
Abstract base class for resolving method arguments from a named value. Request parameters, request headers, and path variables are examples of named values. Each may have a name, a required flag, and a default value.

Subclasses define how to do the following:

  • Obtain named value information for a method parameter
  • Resolve names into argument values
  • Handle missing argument values when argument values are required
  • Optionally handle a resolved value

A default value string can contain ${...} placeholders and Expression Language #{...} expressions. For this to work a ConfigurableBeanFactory must be supplied to the class constructor.

从以下版本开始:
4.0 2022/1/19 21:26
作者:
Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Harry Yang
  • 字段详细资料

    • configurableBeanFactory

      @Nullable private final cn.taketoday.beans.factory.config.ConfigurableBeanFactory configurableBeanFactory
    • expressionContext

      @Nullable private final cn.taketoday.beans.factory.config.BeanExpressionContext expressionContext
  • 构造器详细资料

    • AbstractNamedValueResolvingStrategy

      public AbstractNamedValueResolvingStrategy()
    • AbstractNamedValueResolvingStrategy

      public AbstractNamedValueResolvingStrategy(@Nullable cn.taketoday.beans.factory.config.ConfigurableBeanFactory beanFactory)
      参数:
      beanFactory - a bean factory to use for resolving ${...} placeholder and #{...} EL expressions in default values, or null if default values are not expected to contain expressions
  • 方法详细资料

    • resolveArgument

      @Nullable public final Object resolveArgument(RequestContext context, ResolvableMethodParameter resolvable) throws Throwable
      从接口复制的说明: ParameterResolvingStrategy
      Resolve parameter
      指定者:
      resolveArgument 在接口中 ParameterResolvingStrategy
      参数:
      context - Current request context
      resolvable - resolvable parameter
      返回:
      method parameter instance
      抛出:
      Throwable - if any Exception occurred
      另请参阅:
    • getNamedValueInfo

      protected NamedValueInfo getNamedValueInfo(ResolvableMethodParameter resolvable)
    • resolveEmbeddedValuesAndExpressions

      @Nullable private Object resolveEmbeddedValuesAndExpressions(String value)
      Resolve the given annotation-specified value, potentially containing placeholders and expressions.
    • resolveName

      @Nullable protected abstract Object resolveName(String name, ResolvableMethodParameter resolvable, RequestContext context) throws Exception
      Resolve the given parameter type and value name into an argument value.
      参数:
      name - the name of the value being resolved
      resolvable - the method parameter to resolve to an argument value (pre-nested in case of a Optional declaration)
      context - the current request context
      返回:
      the resolved argument (may be null)
      抛出:
      Exception - in case of errors
    • handleMissingValue

      protected void handleMissingValue(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) throws Exception
      Invoked when a named value is required, but resolveName(String, ResolvableMethodParameter, RequestContext) returned null and there is no default value. Subclasses typically throw an exception in this case.
      参数:
      name - the name for the value
      parameter - the method parameter
      request - the current request
      抛出:
      Exception
    • handleMissingValue

      protected void handleMissingValue(String name, cn.taketoday.core.MethodParameter parameter)
      Invoked when a named value is required, but resolveName(String, ResolvableMethodParameter, RequestContext) returned null and there is no default value. Subclasses typically throw an exception in this case.
      参数:
      name - the name for the value
      parameter - the method parameter
    • handleMissingValueAfterConversion

      protected void handleMissingValueAfterConversion(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) throws Exception
      Invoked when a named value is present but becomes null after conversion.
      参数:
      name - the name for the value
      parameter - the method parameter
      request - the current request
      抛出:
      Exception
    • handleNullValue

      @Nullable private Object handleNullValue(String name, @Nullable Object value, Class<?> paramType)
      A null results in a false value for booleans or an exception for other primitives.
    • handleResolvedValue

      protected void handleResolvedValue(@Nullable Object arg, String name, ResolvableMethodParameter resolvable, RequestContext context)
      Invoked after a value is resolved.
      参数:
      arg - the resolved argument value
      name - the argument name
      resolvable - the argument parameter type
      context - the current request