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

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


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)@ResponseBodypublic 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.


you can use jackson's JsonDeserialize annotation, short and clean

create the following deserializer:

public class BooleanDeserializer extends JsonDeserializer<Boolean> {    public BooleanDeserializer() {    }    public Boolean deserialize(JsonParser parser, DeserializationContext context) throws IOException {        return !"0".equals(parser.getText());    }}

and add the annotation to your DTO like so:

public class MyDTO {    @NotNull    @JsonDeserialize(using = BooleanDeserializer.class)    private Boolean confirmation;}