I have the following class:
public class MyDTO {
private String kiosk;
...
}
and following url:
http://localhost:1234/mvc/controllerUrl?kiosk=false
and following controller method:
@RequestMapping(method = RequestMethod.GET, produces = APPLICATION_JSON)
@ResponseBody
public ResponseEntity<List<?>> getRequestSupportKludge(final MyDTO myDTO, BindingResult bindingResult) {
...
}
Now it is working nice and boolean field resolves properly.
Now url parameter has changed like this:
http://localhost:1234/mvc/controllerUrl?new_kiosk=false
I don't want to change parameter name inside the DTO. Is there way to say spring to understand that new_kiosk
request parameter value should be put into kiosk
field ?
Apart from setting an additional setter you can hande the case by making a custom argument resolver. There's a few ways you can go about it, but there's already a well discussed post. If I were you I would focus on the jkee's answer. Follow it step by step, and than all you should do is annotate your DTO with something like,
public class MyDTO {
@ParamName("new_kiosk")
private String kiosk;
...
}
Note that even if you can't change MyDTO
class, you can still follow a custom resolver route. In this post I've answered how you can write a parameter type annotation. Combining the two post you can easily come up with an annotation e.g. @ParamMapper
that would define the mapping from request to properties. Think of something like
getRequestSupportKludge(@ParamMapper("new_kiosk;kiosk") MyDTO myDTO, BindingResult bindingResult)
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