根据Spring文档,您可以在地图中接收所有GET
参数,如下所示:
@GetMapping
public final ReturnType getAll(@RequestParam MultiValueMap<String, String> allRequestParams) {
...
}
是否有可能(以及如何)接受自定义Java对象(通过子类化Converter
为其存在自定义GenericConverter
),以便Converter获取整个请求映射构建DTO对象?
@GetMapping
public final ReturnType getAll(@RequestParam CustomDTO customObj) {
[...]
}
[...]
@Component
public class CustomDTOConverter implements GenericConverter {
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
// Allow MultiValueMap.class to CustomDTO.class
[...]
}
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
final MultiValueMap<String, String> requestMap = (MultiValueMap<String, String>) source;
// Construct CustomDTO from the requestMap
}
}
尝试上述代码段会失败,抱怨没有参数customObj
。
答案 0 :(得分:0)
对于将get参数转换为java对象,请使用不带注释的方法参数。 CustomDto必须有setter。
@GetMapping
public final ReturnType getAll(CustomDTO customObj) {
...
}
class CustomDto {
int x;
String s;
public void setX(int x) {
this.x = x;
}
public void setS(String s) {
this.s = s;
}
}