code: private static Class<?> resolveType(ELContext context, PropertyDescriptor pd)
      {
          if (pd != null)
          {
              Object type = pd.getValue("type");
              if (type != null)
              {
                  type = ((ValueExpression)type).getValue(context);
                  if (type instanceof String)
                  {
                      try
                      {
                          type = ClassUtils.javaDefaultTypeToClass((String)type);
                      }
                      catch (ClassNotFoundException e)
                      {
                          type = null;
                      }
                  }
                  return (Class<?>) type;
              }
              return pd.getPropertyType();
          }
  
          return null;
      }
docs: adapted from CompositeMetadataTargetImpl#getPropertyType():