使用struts2跳转后css和js失效的解决方式

来源:互联网 发布:手写字体生成器软件 编辑:程序博客网 时间:2024/06/05 01:53

使用struts2跳转后css和js失效的解决方式


                 根据观察,主要是由于通过action跳转后的url会根据命名空间,自动跳转到命名空间子目录,使得当前引用的css和js查找不到,从而失效,根据这个原因,可使用五种办法解决:

           1.  使用struts成功跳转后CSS样式失效,我去这是一个很严重的问题啊,于是就百度,各种脑补知识,原来是路径的问题,解决方法也好多(有:namespace,该引用css路径 等,都很费劲,又改动太大,最后找到解决方法所在   只有把Struts中<result>属性改一下即可改为redirect。即可


如下面我所添加的红色代码即可!

<result name="success" type="redirect">guanli.html</result>


<pre name="code" class="java"><span style="color:#333333;"><struts><constant name="struts.enable.DynamicMethodInvocation" value="true" /><constant name="struts.devMode" value="true" /><!-- 声明包 -->    <package name="myPackage" extends="struts-default">    <!-- 定义action --><!-- 管理员进行操作   结果集  -->    <action name="YongHu" class="net.jiaxiang.action.YongHuDenRu">    <!-- 管理员登陆成功  映射页面 -->    <result name="success" type="redirect">guanli.html</result>    <!-- 管理员登陆失败    映射页面 -->    <result name="error" type="redirect">YeMian_ZiYuan/ChuCuo/shibai/yonghu.html</result>    </action>    </package></struts></span>



注意:这后面都是方式比较复杂 不建议使用!


1.使用struts2.xml文件中配置文件的配置,通过修改result的type使得url重定向,result默认的是dispatcher,是服务器中的跳转,使用redirect可以使得客户端重新得到一个新的url,这样url会是上一次目录,可以查找到css和js,但是这种办法有一种特别不好的地方,每次跳转需要把数据保存到session中,对于开发来说是不可取的,它会重新创建一个action,使得上一个action中的数据无法使用,不建议采用。
2.由于url的原因使得css和js查找不到,我们可以把引入的css和js加入进一步地址比如说:以前的地址是< link href= "../style.css" rel="stylesheet" type="text/css" /> 可以修改为< link href= "../../style.css" rel="stylesheet" type="text/css" />这样网页就可以直接查询到自己的外部样式表了。
3.将struts2.xml命名空间改写为“/”,不再使用自定义的命名空间,比如说“/admin”。
4.使用jsp网页中的basePath是项目的根路径不过需要在其下加入子目录,因为本身的basePath是属于根路径,需要下面的子目录,比如说在admin子目录下:String basePath = request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort()+path+ "/admin/"

0 0
原创粉丝点击