contextPath问题

项目使用路径之前一直使用的相对路径 比如Action='/login'  现在集成别的项目需要使用绝对路径,设置了 me.add(new ContextPathHandler("basePath")); 在页面使用 Action='#(basePath)/login' 发现不起作用 ,#(basePath)是个空串,看new ContextPathHandler("basePath")代码发现它是将以key为basePath value为request.getContextPath();放到request作用域当中,断点发现request.getContextPath()就是个空串,想要的最终结果是Action='http://localhost:port/login' 这样的效果  @Jfinal

评论区

Don小浩

2018-08-21 13:08

点击相对路径的时候 jfinal是通过什么将链接拼接成完整路径的 还是jetty做的? @Jfinal 波哥

JFinal

2018-08-21 14:22

ContextPathHandler 只管到 context path, 不管 "http:" 以及 "port",如果你想实现这个功能,可以参考 ContextPathHandler 做一个 MyHostHandler,在里面自己拼接一下 http: 以及 port ,这两个参数都是可以通过 request.getXxx() 获取到的

Don小浩

2018-08-21 14:57

@JFinal 目前获取的context path就是个空串 我现在实现了一个 自己写的 handle 里面 使用的是 request.getrequstURL() 存到了作用域使用 但是不知道会出现什么问题 request.getrequstURL()得到的数据为 http://localhost:port/ 我把最后的/去掉 在页面进行使用的

JFinal

2018-08-21 15:10

@Don小浩 "context path就是个空串" 这个很正常,如果你的 context path 被配置成空串,那它就必须是空串,否则就是错误的

JFinal

2018-08-21 15:10

@Don小浩 例如,你在 tomcat 的 server.xml 中配置一下 context path 值为 "/abc", 那这时得到的就是 "/abc" ,就不会是空串了

Don小浩

2018-08-21 15:23

@JFinal 懂了 ContextPathHandler 这个是只有在外部 中间件设置启动jfinal 设置了contextPath才有值。。。。谢谢波哥

Don小浩

2018-08-21 16:53

@JFinal 波哥 我之前使用request.getRequestURL() 这个方式是行不通的 获取的路径不对 现在自己写的handle stringbuilder拼接 http:// + request.getServerName()+request.getServerPort()+/

JFinal

2018-08-21 17:10

@Don小浩 简单来说就是 context path 该是什么,那么 ContextPathHandler 就会得到什么

热门反馈

扫码入社