Custom Formatter<String> not working...
Hi,
I am trying to apply a Spring 3 custom Formatter in SWF 2.1.1:
Code:
class AccountNumberFormatter implements Formatter<String> {
MaskFormatter mask;
public AccountNumberFormatter(String pattern) {
try{
mask = new MaskFormatter(pattern);
mask.setValueContainsLiteralCharacters(false);
}catch(ParseException e) {
// TODO
e.printStackTrace();
}
}
public String print(String object, Locale locale) {
try{
return mask.valueToString(object);
}catch(ParseException e){
return null;
}
}
public String parse(String text, Locale locale) throws ParseException {
return (String)mask.stringToValue(text);
}
}
It is used through a custom annotation:
Code:
@AccountNumberFormat
private String accountNumber;
While other formatters work fine, this one does not. However in plain Spring 3 MVC, it works as expected.
When I have a look at SFW code, I see the following in class BindingModel:
Code:
private Object getFormattedValue(String field) {
Expression fieldExpression = parseFieldExpression(field, true);
Class valueType = fieldExpression.getValueType(boundObject);
if (isCustomConverterConfigured(field) || avoidConversion(valueType)) {
fieldExpression = parseFieldExpression(fieldExpression.getExpressionString(), false);
}
Object value = fieldExpression.getValue(boundObject);
if ((value instanceof String) == false) {
if (avoidConversion(valueType) == false) {
PropertyEditor editor = findSpringConvertingPropertyEditor(field, valueType);
if (editor != null) {
editor.setValue(value);
value = editor.getAsText();
}
}
}
return value;
}
If I override the class and remove the test on the String class, everything works fine.
So what is the reason behind this test ?
I had a look at the previous post but it did not help...