Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring @RequestHeader映射值包含两次标头_Spring_Spring Mvc_Spring Boot - Fatal编程技术网

Spring @RequestHeader映射值包含两次标头

Spring @RequestHeader映射值包含两次标头,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,我们正面临一个非常奇怪的问题:在我们的端点: @PostMapping(value = "/send_event_to_payment_process") @Async public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @RequestHeader(value = TENANT) String foo) { 映射的@RequestHeader变量foo包含两次与“,”连接的vaue(“test,te

我们正面临一个非常奇怪的问题:在我们的端点:

@PostMapping(value = "/send_event_to_payment_process")
@Async
public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @RequestHeader(value = TENANT) String foo) {
映射的@RequestHeader变量foo包含两次与“,”连接的vaue(“test,test”)。如果我们使用请求上下文以编程方式读取标头:

public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @Context final HttpServletRequest request) {
final String tenant = request.getHeader(TENANT);
我们收到正确的值(只有一次:“测试”)

有什么线索说明问题出在哪里


谢谢大家!

你在比较不同的东西

HttpServletRequest.getHeader方法始终返回一个值,即使报头有多个值。它将返回第一个(请参见方法的)

Spring使用该方法获取所有值。它检索所有标题值,并根据值返回
字符串[]
或创建单个串联的
字符串


要比较相同的内容,还应该使用
getHeaders
方法,然后得到相同的结果。这意味着您的请求包含给定标头的2个标头值

听起来好像正在从字符串[]进行类型转换。尝试将foo参数的类型更改为String[],以查看是否得到两个单独的值您的答案也指向了正确的方向。我只是不理解Springs处理请求头的内部结构。也谢谢你的帮助!非常感谢你的帮助。这对我们帮助很大。