Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 813
Tommy Avatar asked Oct 04 '13 10:10

Tommy


People also ask

Can request Param be Boolean?

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.

What is @RequestParam required false?

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.

What does the @RequestParam annotation do?

@RequestParam annotation enables spring to extract input data that may be passed as a query, form data, or any arbitrary custom data.


2 Answers

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.

like image 55
Tydaeus Avatar answered Oct 11 '22 20:10

Tydaeus


Spring should be able to interpret true, 1, yes and on as true boolean value... check StringToBooleanConverter.

like image 31
Pavel Horal Avatar answered Oct 11 '22 19:10

Pavel Horal