在Spring控制器中将所有@RequestHeader键值作为Map访问

时间:2016-07-18 12:10:20

标签: spring spring-mvc

我正试图找到方法,我可以将@RequestHeader注释中的所有Key值填充到Map中。 我试图谷歌它,但我能找到的是一种将每个键值映射到一个参数的方法。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @RequestMapping(value = "/hello.htm")
    public String hello(@RequestHeader(value="User-Agent") String userAgent)

        //..
    }
}

但我希望实现这样的目标。

@RequestHeader Map headerParam;

这样我就可以遍历Map并根据需要使用所有标题值。

3 个答案:

答案 0 :(得分:14)

您可以按照以下方式实现 -

@RequestMapping(value = "/hello.htm")
public String hello(@RequestHeader HttpHeaders httpHeaders){
    Map<String,String> headerMap=httpHeaders.toSingleValueMap();
    //TODO httpHeaders will have many methods
}

我希望它会对你有所帮助。 谢谢。

答案 1 :(得分:0)

如果你使用 spring boot 下面的映射就可以了

@RequestHeader Map 标头

@PostMapping(value = "/customer", produces = { "application/json" })
ResponseEntity<String> findName(@RequestHeader Map<String, String> headers) {

}

答案 2 :(得分:-1)

@Controller
public class HelloController {

    @RequestMapping(value = "/hello.htm")
    public String hello(@RequestHeader final Map<String, String> headerMap)

        //..
    }
}