web-dev-qa-db-fra.com

Spring @RequestParam mapping Boolean basé sur 1 ou 0 au lieu de true ou false

Pourquoi Spring 3.2 mappe-t-il uniquement mon booléen en fonction du fait que le paramètre de requête est "0" ou "1"?

@RequestParam(required= false, defaultValue = "false") Boolean preview

L'aperçu ne sera que "true" lorsque le paramètre de requête est "?preview=1" ce qui est bizarre

Je veux que ce soit "?preview=true". Comment je fais ça?

23
Tommy

Je pense que nous aurons peut-être besoin de plus de détails pour répondre efficacement à votre question.

Je travaille le code Spring 3.2 dans le sens de:

@RequestMapping(value = "/foo/{id}", method = RequestMethod.GET)
@ResponseBody
public Foo getFoo(
    @PathVariable("id") String id, 
    @RequestParam(value="bar", required = false, defaultValue = "true")
        boolean bar)
{ 
    ... 
}

Spring interprète correctement ?bar=true, ?bar=1, ou ?bar=yes comme étant vrai, et ?bar=false, ?bar=0, ou ?bar=no comme étant faux.

Les valeurs vrai/faux et oui/non ignorent la casse.

57
Tydaeus

Spring devrait être capable d'interpréter true , 1 , oui et sur comme true valeur booléenne ... check - StringToBooleanConverter .

12
Pavel Horal