Validierung mit double-Wert im Frühjahr
Möchte ich überprüfen, score-Wert: 0.00 <= Wert<= 10.00
Verwendet habe ich:
-Modell(Score):
@Range(min = (long) 0.0, max = (long) 10.0)
private double score;
-Nachrichten.Eigenschaften:
Range.score.score=Please input 0<= score <=10
-servlet-context.xml:
<beans:bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="basename" value="messages" />
</beans:bean>
Aber der Wert = 10.01 bestanden hat die Prüfung ein.
Bitte helfen Sie mir.
- Natürlich. Casting
10.01
zulong
abgeschnitten wird der Wert10
, so dass Sie Ihren check-pass. - wie kann ich überprüfen den Wert nur kleiner als oder gleich 10?
- Nicht mit
@Range
, das ist sicher. - sorry, das ich nicht klar mit Ihrem Vorschlag. Wenn Sie nicht verwenden können, @Spektrum was sollte ich verwenden?
- Ich glaube, Sie sind mit
org.hibernate.validator.constraints.Range
, aber ich bin mir nicht sicher. Wenn Sie sind, sehe ich in den docs derMax
eine Ebene nach oben das folgende:"Note that double and float are not supported due to rounding errors (some providers might provide some approximative support)."
. Der einzige, der mit Dezimalstellen die unterstützt wird, istBigDecimal
so vielleicht verwenden@Range(min = new BigDecimal(0.0), max = new BigDecimal(10.0)) private BigDecimal score;
? Für Doppel-ich weiß nich..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich löse mein proplem mit:
Danke viel @ Kayaman ,@hyness
@DecimalMax
und@DecimalMin
sagt auchNote that {@code double} and {@code float} are not supported due to rounding errors
...Gibt es zwei Probleme. Erste problem ist, dass Sie versuchen, geben Sie einen Datentyp, der im Attribut der annotation. Sie brauchen nicht, um den Datentyp anzugeben oder einen Bruchteil entweder diese Anmerkung nimmt nur ganze zahlen.
Auch, wie bestimmt bei vielen anderen, doubles und floats sind nicht erlaubt, um die Rundung-Fehler, so dass Sie benötigen, um ein BigDecimal-statt einem Doppelzimmer. BigDecimal hat eine doubleValue () - Methode, um den Wert als double.