JFinalFilter.java中获取contextPathLength貌似有问题

String contextPath = filterConfig.getServletContext().getContextPath();
contextPathLength = (contextPath == null || "/".equals(contextPath) ? 0 : contextPath.length());

问题是:ServletContext的getContextPath方法有如下说明:

return

The context path of the web application, or "" for the default (root) context

所以代码中的 "/".equals(contextPath)是否应该是"".equals(contextPath)

评论区

JFinal

2017-09-27 18:08

有些情况 contextPath 为 "/",所以要对此进行判断,而为 "" 的情况,正好 length() 值为 0,这段代码依然正常

LongLee力

2017-09-27 18:43

@JFinal 懂了,谢谢!

小轩鞎

2019-07-25 10:43

@JFinal 我也遇到这种问题了 貌似报错了 :[WARN]-[Thread: http-nio-8080-exec-8]-[com.jfinal.core.ActionHandler.handle()]: 404 Action Not Found: /

JFinal

2019-07-25 11:14

@小轩鞎 如果用的 jfinal undertow,升级到最新版,对 contextPath 的处理更精细

如果是用的别的东东,常规方法解决,例如检查路由对不对

热门反馈

扫码入社