code: @Override
  	public Object getValue(ELContext context, Object base, Object property) {
  		if (context == null) {
  			throw new NullPointerException("context is null");
  		}
  		Object result = null;
  		if (isResolvable(base)) {
  			if (property != null) {
  				try {
  					result = ((ResourceBundle) base).getObject(property.toString());
  				} catch (MissingResourceException e) {
  					result = "???" + property + "???";
  				}
  			}
  			context.setPropertyResolved(true);
  		}
  		return result;
  	}
docs: If the base object is an instance of ResourceBundle, the provided property will first be
  coerced to a String. The Object returned by getObject on the base ResourceBundle will be
  returned. If the base is ResourceBundle, the propertyResolved property of the ELContext
  object must be set to true by this resolver, before returning. If this property is not true
  after this method is called, the caller should ignore the return value.
  
  @param context
  The context of this evaluation.
  @param base
  The bundle to analyze. Only bases of type ResourceBundle are handled by this
  resolver.
  @param property
  The name of the property to analyze. Will be coerced to a String.
  @return If the propertyResolved property of ELContext was set to true, then null if property
  is null; otherwise the Object for the given key (property coerced to String) from the
  ResourceBundle. If no object for the given key can be found, then the String "???" +
  key + "???".
  @throws NullPointerException
  if context is null.
  @throws ELException
  if an exception was thrown while performing the property or variable resolution.
  The thrown exception must be included as the cause property of this exception, if
  available.