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?
You can also use the primitive boolean type for @RequestParam in place of Boolean . In this case, Spring automatically assigns false . For example, the following isCanceled param is optional. When you hit the URI http://localhost:8080/orderStatus , then the Spring assigns false to the isCanceled primitive.
Method parameters annotated with @RequestParam are required by default. This means that if the parameter isn't present in the request, we'll get an error: GET /api/foos HTTP/1.1 ----- 400 Bad Request Required String parameter 'id' is not present.
@RequestParam annotation enables spring to extract input data that may be passed as a query, form data, or any arbitrary custom data.
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.
Spring should be able to interpret true, 1, yes and on as true
boolean value... check StringToBooleanConverter.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With