问题描述
我正在使用ServerWebExchangeContextFilter过滤器将当前ServerWebExchange上下文存储在spring提供的上下文映射中。
但是,当我尝试从代码的另一部分(下游)获取此保存的ServerWebExchange上下文时,我从上下文映射中针对键(10,)
获得了一个空上下文。
<!DOCTYPE html>
<html>
<head>
<!-- .... -->
</head>
<body>
<!-- .... -->
<a class="twitter-share-button" href="https://twitter.com/intent/tweet">Tweet</a>
<!-- .... -->
<script>
window.twttr = (function(d,s,id) {
var js,fjs = d.getElementsByTagName(s)[0],t = window.twttr || {};
if (d.getElementById(id)) return t;
js = d.createElement(s);
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
t._e = [];
t.ready = function(f) {
t._e.push(f);
};
return t;
}(document,"script","twitter-wjs"));
</script>
</body>
</html>
ServerWebExchangeContextFitler类具有以下定义:
EXCHANGE_CONTEXT_ATTRIBUTE
我正在为我的组织编写一个公共库函数,因此希望避免在参数元组内部传递ServerHttpRequest。因此,请发布答案,使我可以从静态函数访问上下文。
解决方法
我找到了解决方案。显然,我试图从一个隔离的函数中获取保存的上下文。 通过将此Mono添加到我的原始控制器的执行链中,我能够解决它。 发生这种情况是因为ServerWebExchangeContextFilter将上下文保存在控制器的执行链中。现在,由于我想添加一个获取请求上下文的库方法,因此我不得不使用平面图将此函数链接到我的控制器。