Reputation: 1256
when I try to map Boolean value from url to spring controller, it always map to false.
This is my url
http://localhost:8080/myurl?isFirstTime=true
here is my controller
@RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?> getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {
//here isFirstTime is always set to false
}
MyObj
is POJO and has several other attributes which are mapping perfectly
public class Myobj{
private boolean isFirstTime
//there are other members as well
//getter setter
i tried putting @JsonProperty
but that also didn't work
@JsonProperty
private boolean isFirstTime
any idea what am I doing wrong here ?
Upvotes: 3
Views: 1914
Reputation: 1
I stuck at this problem, but I've found that we must use Boolean object instead of boolean primitive type to map boolean value correctly in ModelAttribute
Upvotes: 0
Reputation: 318
The most easiest method could be
@RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?> getMyUrl(@Valid @ModelAttribute MyObject ap,@RequestParam boolean isFirstTime, BindingResult bindingResult ) {
//here isFirstTime is always initialized from incoming request parameters // you can set it ap.isFirstTime(isFirstTime); // or whatever your setter method is
}
Upvotes: 0
Reputation: 2061
With @ModelAttribute, the object will be initialized:
In your case, it might relative to the last statement.
You can try 2 way to solve it: - Provide the constructor with the boolean argument in Myobj.java - Add more method to initialize the @ModelAttribute Myobj firstly
@ModelAttribute
public Myobj initObj(@RequestMapping boolean isFirstTime){
Myobj obj = new MyObj();
obj.setIsFirstTime(isFirstTime);
return obj;
}
Upvotes: 1