Spring @RequestParam mapping Boolean based on 1 or 0 instead of true or false

Tommy picture Tommy · Oct 4, 2013 · Viewed 66.7k times · Source

Why is Spring 3.2 only mapping my Boolean based on that the requestparam is "0" or "1" ?

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

Preview will only be "true" when the requestparam is "?preview=1" which is wierd

I want it to be "?preview=true". How do I do that?

Answer

Tydaeus picture Tydaeus · Aug 4, 2014

I think we may need more detail in order to be effective answering your question.

I have working Spring 3.2 code along the lines of:

@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 correctly interprets ?bar=true, ?bar=1, or ?bar=yes as being true, and ?bar=false, ?bar=0, or ?bar=no as being false.

True/false and yes/no values ignore case.