Open inad9300 opened 5 years ago
This is expected. We do not support mixing @Param
and @QueryMap
using the Bean
specification currently. The models are effectively incompatible. In the meantime, my suggestion is to use a custom Encoder
for the parameters you want to control. You can find more information on that in the README - Custom Parameter Expansion
When using the @Param
annotation, you must annotate each method parameter. The alternative is to use a @QueryMap
, using the Map
specification. In your particular case, you could refactor your interface to accomplish what you are asking:
@RequestLine("GET /things")
CustomPageImpl<ThingDto> getElements(
@QueryMap Map<String, Object> parameters,
@Param(encoder = "PageableEncoder.class") Pageable pageRequest);
Add all of your parameters to the map and they will be expanded onto the query string. Using the custom encoder, you can control how the Pageable
is expanded as well.
Let me know if this helps or if you have more questions.
I disagree the two models are incompatible, but this should be explicitly stated in the documentation, since as it is written now, what I was trying to do initially should be expected to work.
Thanks for your proposed workaround.
Just ran into this, IMO it should be clear in the documentation or even better, the Contract
should throw an exception when it encounters such a case.
Time is a friend here. I’ll revisit this.
Just ran into this, IMO it should be clear in the documentation or even better, the
Contract
should throw an exception when it encounters such a case.
Sounds like a good plan @jebeaudet, can you help on making it happen?
Hi there, is there is any progress on issue?
This kind of code (from https://github.com/OpenFeign/feign/pull/335/files#diff-13815c678552a275075ab18b17c67784R616):
Does not work when
@QueryMap
is used on a POJO.In my case, I was trying to use Spring's
Pageable
like so:By the way... Is there any simpler way to declare query parameters without having to refer four times to their names?