Java 将值从标头设置为请求DTO
我正在为我的应用程序使用字符串引导。在interceptor中,我可以从标头中获取值,并希望将其添加到请求DTO中—不是设置标头,而是将值设置为请求DTO。我该怎么做 想象一下,我的请求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
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
。您唯一可以使用的是一个简单的过滤器
,如本例所示: