Uso de primavera de mensagens typeMismatch

Fiz algumas pesquisas na Web e no stackoverflow para ver como lidar com a seguinte mensagem que recebo em uma das minhas telas:

Falha ao converter o valor da propriedade do tipo [java.lang.String] no tipo obrigatório [java.lang.Long] para a propriedade 'qtyToShip'; exceção aninhada é java.lang.IllegalArgumentException: Não foi possível analisar o número: Número não analisável: "a"

A partir de pesquisas e de olhar para a web, presumi que adicionar o seguinte ao meu arquivo errors.properties produziria os resultados desejados:

typeMismatch.shippingCommand.qtyToShip=1. Invalid value for Qty To Ship, accepts only numbers.  
typeMismatch.qtyToShip=2. Invalid value for Qty To Ship, accepts only numbers. 
shippingCommand.qtyToShip=3. Invalid value for Qty To Ship, accepts only numbers. 
qtyToShip=4. Invalid value for Qty To Ship, accepts only numbers.


typeMismatch.java.lang.NumberFormatException=5. Invalid value for {0}, accepts only numbers. 
typeMismatch.java.lang.Integer=Must specify an integer value. 
typeMismatch.java.lang.Long=Must specify an integer value. 
typeMismatch.java.lang.Float=Must specify a decimal value. 
typeMismatch.java.lang.Double=Must specify a decimal value.  
typeMismatch.int=Invalid number entered 
typeMismatch=Invalid type entered

Eu adiciono valores inteiros à mensagem para determinar qual deles seria exibido.

Agora, na parte superior do meu JSP, tenho o seguinte:

  <center>
    <spring:hasBindErrors name="shippingCommand">
      <c:if test="${errors.errorCount > 0 }">
        <h4>Following errors need to be corrected:</h4>
        <font color="red">
          <c:forEach items="${errors.allErrors}" var="error">
            <spring:message code="${error.code}" arguments="${err.arguments}" text="${error.defaultMessage}"/><br />
          </c:forEach>
        </font>
      </c:if>
    </spring:hasBindErrors>
  </center>

O acima está fora do meu formulário, dentro do meu formulário eu tenho o seguinte (testando ideais)

Portanto, os resultados são que, quando executo meu código para acionar o erro, vejo que dentro do meu formulário recebo a seguinte mensagem:

1. Invalid value for Qty To Ship, accepts only numbers.

O que vem disso: typeMismatch.shippingCommand.qtyToShip

A parte externa do formulário exibe:

Invalid type entered

O que eu não entendo é por que consigo exibir a mensagem correta dentro do meu formulário, mas não fora?

No controlador, adicionei o seguinte:

@Override
protected void initBinder(HttpServletRequest pRequest, ServletRequestDataBinder pBinder) throws Exception
{
    NumberFormat numberFormat = NumberFormat.getInstance();
    pBinder.registerCustomEditor(Long.class, "qtyToShip", new CustomNumberEditor(Long.class, numberFormat, false));
}

obrigado

questionAnswers(1)

yourAnswerToTheQuestion