Spring mvc映射头和参数

时间:2011-06-18 14:54:48

标签: java spring spring-mvc

我想支持这样一种场景,即可以通过参数或标题将特定的值发送到我的应用程序。我想以这种方式支持几个论点。

使用Spring mvc注释实现此目的的最佳方法是什么?

请注意,有时会向我发送标题,有时会使用相同的密钥发送参数。从我的应用程序角度来看,它完全没有任何区别。对我来说最好的方法是将它映射到JavaBean。

有可能吗?

Yosi

2 个答案:

答案 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

更改它会很简单