具有别名参数名称以接受Url编码的表单数据值



在我的Spring web应用程序中,我有一个API,它接受application/x-www-form-urlencoded内容类型的请求。

@RequestMapping(value = "/do-it", method = {RequestMethod.POST})
public String test(@ModelAttribute("request")RequestDTO request,HttpServletRequest
httpServletRequest, Map<String, Object> model, RedirectAttributes redirectAttributes){
.....
}

我的RequestDTO中有以下字段。

public class RequestDTO {
private String paramOne;
private String paramTwo;
// standard getters and setters
}

此实现工作良好,所有请求参数都按预期映射到请求dto。然而,现在我有了接受以下模式中具有字段的请求的要求。

param_one,param_two

我知道,在我的请求dto中的字段上使用@JsonProperty注释在我的情况下是不起作用的,因为请求不属于application/json类型。

我发现解决这个问题的唯一方法是创建新的setter,比如下面(在我看来,当涉及到命名约定时,这看起来很难看(。

public void setParam_one(String param_one) {
this.paramOne = param_one;
}

有人能帮我找到一个更好的方法来完成这件事吗?我无法将原始请求数据中的参数名称更改为。

谢谢。。!

我能够完成这项工作。感谢@neetash指导我。

我所需要的一切都是一个Custom HandlerMethod ArgumentResolver,用于将请求后的正文数据映射到我想要获得的对象。

我遵循了下面的链接教程来实现它。它包含了创建HandlerMethodArgumentResolver所需要知道的每一件事。

https://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-creating-a-custom-handlermethodargumentresolver/

最新更新