EDIT (ottobre 2015): Primavera 4 maniglie java.util.Optional
(da Java 8) fuori dalla scatola e garantisce che Optional
sé non è nulla, ma domanda iniziale era di circa com.google.common.base.Optional
di Guava, che uso come @RequestParam
è altamente sconsigliato in questo caso specifico (perché è possibile essere nullo).
RISPOSTA ORIGINALE (circa Optional
di Guava):
non farlo, basta usare String
e lasciare gestire Primavera null
a suo modo.
Optional<T>
deve essere utilizzato come return value e raramente come parametro. In questo caso particolare primavera mapperà manca "name"
parametro null
, quindi, anche se dopo l'implementazione personalizzata property editor finirete con null
controllo:
@RequestMapping("foo")
@ResponseBody
public String foo(@RequestParam(required = false) final Optional name) {
return "name: " + (name == null ? "null" : name.get());
}
che è completamente inutile (e missuses Optional
), perché può essere raggiunto con:
@RequestMapping("foo")
@ResponseBody
public String foo(@RequestParam(required = false) final String name) {
return "name: " + (name == null ? "null" : name);
}
Credo che sarà "null", perché Spring non sa nulla di Guava, almeno per impostazione predefinita. –
Potrebbe essere possibile registrare un 'PropertyEditor' per dire a Spring come convertire il parametro di richiesta' name' in 'Optional'. http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/validation.html#beans-beans-conversion –
Non esiste una cosa come 'Optional.of (null) ~. –