The issue reported by lis and rosco has a simple cause.
The property path attribute used by the bind tag is just a regular String attribute.
So when the JSP engine processes JSP code like this:
The actual string value received by the BindTag is this:
The DataBinder/BeanWrapper divide this path in the various components:
myForm, myObject, mapField, , stringField (or something similar).
Now, at this point, the "" component is just a regular String. While the expression evaluator of an JSP engine may have more information to infer types, the data binding framework only has a String to work with. Spring simply can't obtain the required type information from a Map instance.
Of course, one workaround would be to amend the databinding code with something like:
This smells like a hack, but may be useful for users binding to Map instances with non-String keys.
// if the path element is a map ...
Class requiredClass = map.keySet().iterator().next().getClass();
// Apply existing binding logic, e.g. call doTypeConversionIfNecessary() etc
p.s. It would be a good idea to move this thread to the Web forum