Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java 将值从标头设置为请求DTO_Java_Spring_Spring Boot_Header - Fatal编程技术网

Java 将值从标头设置为请求DTO

Java 将值从标头设置为请求DTO,java,spring,spring-boot,header,Java,Spring,Spring Boot,Header,我正在为我的应用程序使用字符串引导。在interceptor中,我可以从标头中获取值,并希望将其添加到请求DTO中—不是设置标头,而是将值设置为请求DTO。我该怎么做 想象一下,我的请求DTO是这样的: public class RequestDTO{ private String field1; private String field2; // getters and setters for field1 and field2 } public boolean p

我正在为我的应用程序使用字符串引导。在interceptor中,我可以从标头中获取值,并希望将其添加到请求DTO中—不是设置标头,而是将值设置为请求DTO。我该怎么做

想象一下,我的请求DTO是这样的:

public class RequestDTO{
    private String field1;
    private String field2;

    // getters and setters for field1 and field2
}

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    String value = request.getHeader("some_value");

    // how to add header to request DTO?
    // something like request.getRequest().setField1(value);
}

要在请求对象中设置值:
类似于request.getRequest().setAttribute(id,value);

您不能直接映射到DTO类,但可以获取映射中的所有头键值。例如:

 @RequestMapping
public String handleRequestWithAllHeaders (@RequestHeader Map<String, String> header,
                                           Model model) {
    model.addAttribute("msg", "Trade request with all headers " + headers);
    return "my-page";
}
@RequestMapping
公共字符串HandlerRequestWithAllHeader(@RequestHeader映射头,
(模型){
model.addAttribute(“msg”,“具有所有标题的交易请求”+标题);
返回“我的页面”;
}

或者您可以找到更多选项

不幸的是,我认为您无法使用当前的设置,因为我假定您使用的是
HandlerInterceptorAdapter
。您唯一可以使用的是一个简单的
过滤器
,如本例所示: