问题:struts2 Action返回JSP页面CSS后失效
问题分析:
1,直接访问 XXX.JSP文件,发现CSS文件可以起作用;
2,将这些CSS文件直接写入JSP页面中<head>标签下,发现Action返回这些CSS在起作用。
因此,CSS代码无问题,对于JSP页面CSS文件的路径无问题。问题在于对于XXXX.action来说。CSS文件的位置不对。比如一个登陆界面,一般都会将XXX.Java文件放于src文件夹下的Login包内。而JSP文件放于web.loginFile下面,CSS文件也放在loginFile下面,此时Login.jsp与CSS文个在同一个目录下面,Login.JSP通过相对路径直接可以找到CSS。因此直接访问JSP文件CSS起作用。
然而,当通过动作回发JSP时,可以从浏览器的URL出发现反问的是……8080/Login.action或者如果sruts.xml中 package设置了namespace="/Login" 时URL为……8080/Login/Login.action。显然这个URL肯定找不到CSS文件。
那么是否可以用绝对的URL定位CSS文件呢,经粗略测试了一下,貌似不行。
我是在将代码从IntelliJ IDEA从搬到eclipse中才出现的这个问题。而在IntelliJ IDEA中却没有此问题,猜测可能是由于IntelliJ IDE的关系,可能是自动添加了类似下面的获取路径的方法,又或者是我两个IDE 中web的部署不一样导致的?
解决方法:从网上找到的一种,这种方法采用了java脚本。javaScript应该也存在同样的问题(暂没测试)。这个问题的应该还有其他解决方法。
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/js/easyui/themes/default/easyui.css">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/easyui/locale/easyui-lang-zh_CN.js"></script>