我想支持这样一种场景,即可以通过参数或标题将特定的值发送到我的应用程序。我想以这种方式支持几个论点。
使用Spring mvc注释实现此目的的最佳方法是什么?
请注意,有时会向我发送标题,有时会使用相同的密钥发送参数。从我的应用程序角度来看,它完全没有任何区别。对我来说最好的方法是将它映射到JavaBean。
有可能吗?
Yosi
答案 0 :(得分:3)
您还可以将它们两者首先映射为非空。像:
ModelAndView methodDispatcher(@RequestParam(value = "X-Param", defaultValue = "") string header, @RequestParam(value = "param", defaultValue = "") string param) {
if (StringUtils.isNotEmpty(param)) {
return method(param);
}
if (StringUtils.isNotEmpty(header)) {
return method(header);
}
throw BadRequestException();
}
ModelAndView method(String param) {}
答案 1 :(得分:2)
最佳选择是拥有自定义WebArgumentResolver。然后你可以用@ParamOrHeader注释param。在此处查看例外How to pass a session attribute as method argument (parameter) with Spring MVC。它是关于会话属性的,但是为param-or-header
更改它会很简单