public void setValue(Object context, Object value) {
try {
BeanWrapperImpl beanWrapper = new BeanWrapperImpl(context);
Set converters = conversionService.getConversionExecutors(String.class);
for (Iterator it = converters.iterator(); it.hasNext();) {
ConversionExecutor converter = (ConversionExecutor) it.next();
beanWrapper.registerCustomEditor(converter.getTargetClass(), new PropertyEditorConverter(converter));
}
beanWrapper.setPropertyValue(expression, value);
} catch (NotWritablePropertyException e) {
throw new PropertyNotFoundException(context.getClass(), expression, e);
} catch (TypeMismatchException e) {
throw new ValueCoercionException(context.getClass(), expression, value, e.getRequiredType(), e);
} catch (BeansException e) {
throw new EvaluationException(context.getClass(), getExpressionString(),
"A BeansException occurred setting the value of expression '" + getExpressionString()
+ "' on context [" + context.getClass() + "] to [" + value + "]", e);
}
}