The problem here isn't with validation, it is with the data binding. Data binding happens before validation, and validation is only invoked when all fields have been converted and bound correctly. In your case, the binding step is failing because the String value cannot be converted to a Double.
To customize the error message from the bind failure, declare a MessageSource bean in your application context and create a messages.properties resource bundle as described here:
http://static.springsource.org/sprin...-messagesource.
To specify the message for a data binding error like this, specify a message in the resource bundle with one of the following keys, depending on how specific you want to get: typeMismatch, typeMismatch.profil.weight, typeMismatch.weight, typeMismatch.java.lang.Double.