【问题标题】:Set value from header to request DTO从标头设置值以请求 DTO
【发布时间】:2018-07-18 11:38:11
【问题描述】:

我正在为我的应用程序使用 String Boot。在拦截器中,我可以从标头中获取值并希望将其添加到请求 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);
}

【问题讨论】:

  • 不幸的是,我认为您无法使用当前的设置完成此操作,因为我认为您使用的是HandlerInterceptorAdapter。您唯一可以使用的是一个简单的Filter,如本例所示:stackoverflow.com/a/38616378/471481

标签: java spring spring-boot header


【解决方案1】:

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

 @RequestMapping
public String handleRequestWithAllHeaders (@RequestHeader Map<String, String> header,
                                           Model model) {
    model.addAttribute("msg", "Trade request with all headers " + headers);
    return "my-page";
}

或者您可以找到here 以获取更多选项

【讨论】:

    【解决方案2】:

    在请求对象中设置值:something like request.getRequest().setAttribute(id,value);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-13
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 2016-06-23
      相关资源
      最近更新 更多