从github中下载了jfinal的demo,但这个路径问题搞得人都晕了。
我发布到Tomcat中的应用名为jfinaldemo,而我在浏览器中输入以下地址:
http://localhost:8080/jfinaldemo/
网页是出来了,但css没有生效,看了下index.jsp源码,发现是以下问题:
1.<link href="/css/manage.css" media="screen" rel="stylesheet" type="text/css" />
改成这样就行了:
2.<link href="css/manage.css" media="screen" rel="stylesheet" type="text/css" />
我决得方式1.应该是正确的,因为我输入的路径是:http://localhost:8080/jfinaldemo/
理论上是根目录应该是http://localhost:8080/jfinaldemo/应该没错呀,为什么非要换成相对路么呢?
这种jfinal是如何处理的?应怎样处理?
我在每个页上加上绝对路径了就没问题了:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
所有页面都加上这个basePath.
JFinal 为了避免在页面中反复写入一个类似于 baseUrl或context path这类的路径,从而降低代码量,所以一直都提倡开发者将 context path 直接设置为 "/" ,节省很多宝贵时间。
假如开发者不嫌麻烦,完全可以将 context path 不厌其烦地加入到所有需要添加的地方,方法与传统的非 jfinal 项目完全一样。
另外 jfinal 提供了 ContextPathHandler 让开发者可以在 view 中直接使用 context path 值,节省时间
回复 @andying : 有些版本的IE不支持相对路径的base,用绝对路径吧。加个Interceptor,