Wie geht @RequestParam in Spring Guava's Optional?
@RequestMapping(value = "/contact.html", method = RequestMethod.POST)
public final ModelAndView contact(
@RequestParam(value = "name", required = false) Optional<String> name) {
Wie funktioniert Frühjahr @RequestMapping
Griff ein Optional
von Guava-Bibliothekwenn der Wert des Parameters ist nicht erforderlich und wird nichts gesendet?
Wird es sein:
- Eingestellt
null
- Eingestellt
Optional.absent()
Kann Optional.fromNullable(T)
verwendet werden, um die Anfrage zu akzeptieren?
InformationsquelleAutor der Frage Anders | 2013-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN (Oktober 2015): Spring 4 Griffe
java.util.Optional
(ab Java 8) aus der box und garantiert, dassOptional
selbst ist nicht nullaber die ursprüngliche Frage war über die Guave istcom.google.common.base.Optional
die Nutzung als@RequestParam
empfohlen wird in diesem speziellen Fall (weil es kann null sein).URSPRÜNGLICHE ANTWORT (über Guave ist
Optional
):Nicht, dass, nur verwenden
String
und lassen Feder Griffnull
im Weg.Optional<T>
verwendet werden soll, als Rückgabewert und nur selten als parameter. In diesem Fall wird der Frühling Karte fehlt"name"
parameternull
ist, also auch wenn nach der Implementierung von benutzerdefinierten property editor Sie werde mitnull
check:die völlig unnötige (und missuses
Optional
), denn es kann erreicht werden mit:InformationsquelleAutor der Antwort Xaerxess
Empfehle ich die Nutzung der Java 8 version:
java.util.Optional
. Blick auf die Oracle-Dokumentation in http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html.Auch setzen Sie einen Namen für die variable ein, besonders wenn Ihr mit Spring 3 oder höher:.
java.util.Optional
ist sehr nützlich für die Verwaltung von optionalen parametrers, wie Fehler im Frühjahr.InformationsquelleAutor der Antwort EliuX
Die Antwort auf Sie Frage wird sein, optionalen parameter, der erste ist die Einstellung auf null.
Im Frühjahr HandlerMethodInvoker fand ich resolveRequestParam Methode
Also zuerst überprüfen wir, ob es ein multipart-request. Sonst bekommen wir Werte, die durch den parameter name vom servlet Anfrage. Schließlich, wenn der parameter den Wert null prüfen wir, ob der parameter erforderlich ist. Wenn erforderlich, wir werfen die Ausnahme, ansonsten null zurück.
InformationsquelleAutor der Antwort mvb13