code: public Object getObject(FaceletContext ctx, Class type)
      {
          if ((this.capabilities & EL_LITERAL) != 0)
          {
              if (String.class.equals(type))
              {
                  return this.value;
              }
              else
              {
                  try
                  {
                      return ctx.getExpressionFactory().coerceToType(this.value, type);
                  }
                  catch (Exception e)
                  {
                      throw new TagAttributeException(this, e);
                  }
              }
          }
          else
          {
              ValueExpression ve = this.getValueExpression(ctx, type);
              try
              {
                  return ve.getValue(ctx);
              }
              catch (Exception e)
              {
                  throw new TagAttributeException(this, e);
              }
          }
      }
docs: If literal, simply coerce our String literal value using an ExpressionFactory, otherwise create a ValueExpression
  and evaluate it.
  
  @see ExpressionFactory#coerceToType(java.lang.Object, java.lang.Class)
  @see ExpressionFactory#createValueExpression(javax.el.ELContext, java.lang.String, java.lang.Class)
  @see ValueExpression
  @param ctx
  FaceletContext to use
  @param type
  expected return type
  @return Object value of this attribute