Zrobiłem kilka wyszukiwania w internecie i w stackoverflow, aby zobaczyć, jak obsługiwać następujący komunikat, że dostać się na jednej z moich ekranów:Wiosna Wykorzystanie komunikatów typeMismatch
Nie można przekonwertować wartości nieruchomości z typu [java.lang.String] do wymaganego typ [java.lang.Long] dla właściwości "qtyToShip"; wyjątek zagnieżdżonych jest java.lang.IllegalArgumentException: nie można przetworzyć numer: Unparseable numer: „a”
Od badań i patrząc na internecie Przypuszczałem, że dodanie następujących do mojego pliku errors.properties będzie produkować pożądane wyniki:
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
Dodaję wartości całkowite do wiadomości, aby ustalić, który z nich się pojawi.
Teraz na szczycie mojego JSP mam następujący:
<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>
powyżej jest poza moim formularzu, w moim formularzu mam następujący (testowanie ideały)
Tak więc po uruchomieniu mojego kodu, aby wywołać błąd, widzę, że w moim formularzu pojawia się następujący komunikat:
1. Invalid value for Qty To Ship, accepts only numbers.
który pochodzi z tego: typeMismatch.shippingCommand.qtyToShip
na zewnątrz displayes forma:
Invalid type entered
Co ja nie rozumiem, dlaczego jestem w stanie wyświetlić poprawną wiadomość w mojej formie, ale nie na zewnątrz?
W regulatorze Dodałem następujące:
@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));
}
Dzięki
Son Of A Gun - to się udało. Dzięki – boyd4715