我很好奇,如果有人能分享一些关于为什么HttpServletRequest可能没有从Spring框架中设置特定属性的反馈。我们使用handlermapping.best_matching_pattern_attribute键控关闭的属性。(https://docs.spring.io/spring-framework/docs/4.3.4.release/javadoc-api/org/springframework/web/servlet/handlermapping.html)
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
String path = (new UrlPathHelper()).getPathWithinApplication(request);
chain.doFilter(request, response);
String scrubbedPath = scrubPath(request, path);
}
private String scrubPath(HttpServletRequest request, String path) {
String message = "Response Metric Info";
String scrubbedPath = path;
Object bestMatchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
if (bestMatchingPattern != null) {
//This changes path from .../collection/{alias} to ../collection/alias
scrubbedPath = fixSpecialCharacters(bestMatchingPattern.toString());
} else {
// this is temporary to help with understanding why we get multiple metric names for the same path
message = "BEST_MATCHING_PATTERN_ATTRIBUTE null";
}
logHandlerInfo(message, request, path);
return scrubbedPath;
}
// temp helper method to understand why some metrics are being formatted differently for the same path
// causing multiple metrics for the same path
private void logHandlerInfo(String message, HttpServletRequest request, String path) {
final String LINE_SEPARATOR = System.lineSeparator();
StringBuilder metricInfoBuilder = new StringBuilder();
metricInfoBuilder.append(message);
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("Input Path=%s", path));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.Path=%s", request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.Best=%s", request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.Introspect=%s", request.getAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING)));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.UriTemplate=%s", request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE)));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.Matrix=%s", request.getAttribute(HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE)));
metricInfoBuilder.append(LINE_SEPARATOR).append(String.format("HandlerMapping.MediaTypes=%s", request.getAttribute(HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE)));
log.info(metricInfoBuilder.toString());
}
下面是示例日志。
2018-10-08 20:51:58:300 [qtp1346560976-53746897] [] INFO c.e.m.e.metrics.MetricsFilter - Response Metric Info
Input Path=/v1/group/test/collection/test-dev/status
HandlerMapping.Path=/v1/group/test/collection/test-dev/status
HandlerMapping.Best=/v1/group/{groupAlias}/collection/{alias}/status
HandlerMapping.Introspect=null
HandlerMapping.UriTemplate={groupAlias=test, alias=test-dev}
2018-10-08 20:46:57:745 [qtp1346560976-53746897] [] INFO c.e.m.e.metrics.MetricsFilter - BEST_MATCHING_PATTERN_ATTRIBUTE null
Input Path=/v1/group/test/collection/test-dev/status
HandlerMapping.Path=null
HandlerMapping.Best=null
HandlerMapping.Introspect=null
HandlerMapping.UriTemplate=null
对于丢失的属性,要么不添加,要么稍后删除,这两种情况似乎都不太可能。为了进一步调试,我建议首先找出特定请求使用了哪个HandlerMapping,例如,通过为org.springframework.web设置要调试的日志级别。这将告诉您映射是否支持添加这些属性。如果它是上面提到的其中一个的子类,那么它应该添加它们。
问题内容: 我正在使用POI在Java中创建Excel电子表格。我有以下代码用于创建标题行: 我遇到的问题是,无论我选择哪种颜色,在单元格上设置填充背景颜色总是显示为黑色。我究竟做错了什么?如果我不使用“ setFillPattern”行,则完全不会显示颜色。 问题答案: 我有这个工作。我必须设置前景色以使背景色起作用(??)。 所以我改变了: 至: 而且有效!
首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer测试了教程 这很好用。我还测试了相同的教程,但添加了一个tls机密来测试https,这也很好。 当我创造自己的形象时,我的问题就出现了。以下是我采取的步骤: Dockerfile: 带命令: 我读过无数关于当你的后台状态为“不健康”时该怎么办的帖子
我是个不和谐的新手。js和我有一个问题,我想移动到另一个语音频道的用户消息我的机器人。我已经尝试了很多东西,每次当我想从msg获取成员时,它都是空的,msg。公会也是空的,不知道为什么 我也尝试过,但仍然:TypeError:无法读取null的属性'成员'
为什么?是否有其他方法将消息文本附加到TextAres,也许使用绑定?
我发送我的代币作为改装的授权,但我总是得到401代码。但是如果我在邮递员中使用相同的令牌,我可以访问。我知道我能够访问webapi,因为我可以很好地登录,并且能够从webapi获取令牌。请参阅下面我的代码: ApiService接口 呼叫服务 ### = 2020-04-08 13:03:09.235 14185-14185/com.kotlin.ambulantlcsI/TAG:承载”eyJhb
问题内容: 我能够成功获取经/纬度并将其传递给地址解析器以获取地址。但是,我并不总是找回地址。似乎需要尝试几次?我不知道为什么。 此时我是否有更好的方法来获取地址? 我在这里调用此方法: 问题答案: 根据我的经验,Google Geocoder并非总是能正常工作,我在地图上有几个固定点,当我点击叠加层时,它会弹出带有该经度/纬度地址的祝酒词,这些点不会改变,有时我在同一点上单击10次,但我只得到其