码迷,mamicode.com
首页 > 其他好文 > 详细

带命名空间的action再次返回原来页面,命名空间引起的错误

时间:2014-10-29 00:24:47      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:j2ee   struts   url   namespace   

今天写了一个登陆页面,这个相信对大家来说都没有难度,但是身为屌丝的我,犯贱了一次!

登陆页面表单提交,action中,我加了命名空间,详细如下:

<form id="loginForm" action="actionPackage/login.action" method="post">
	...此处省略...
</form>

登陆都没什么问题,但是问题是当我用户名或者密码错误的时候,我就应该重新返回登录页面,就在重新返回的时候,虽然说通过下面的方式,可以返回到指定的html文档中去

<package name="actionPackage" namespace="/actionPackage" extends="struts-default" >
		<action name="login" class="loginAction" method="execute">
			<result name="success">/WEB-INF/index.html</result>
			<result name="error" >/login.html</result>
		</action>
	</package>
这个时候,问题来了,login.html引入了外部js文件,详细如下:
<script language="javascript" type="text/javascript" src="jquery-1.8.0.min.js" />
	
问题出在这,重新返回的login.html,浏览器get获取js文件时,由于js文件获取地址是相对于url的,这个时候,问题真正出现了!

登录提交表单,url中会将actionPage这个命名空间加上去,那么重新返回login.html时,url也就自然而然的多了actionPage,导致get外部js文件时,获取路径中也多了actionPage这个明明空间,当然就获取不到这个js外部文件了!

登录时的url成了http://localhost:8080/lfdcwtjxt/actionPage/login.action

重新返回login页面时,js的获取路径就变成了http://localhost:8080/lfdcwtjxt/actionPage/jquery-1.8.0,js

这就错了,应该是http://localhost:8080/lfdcwtjxt/jquery-1.8.0,js才对

解决方案是:

利用重定向去解决:配置如下

<package name="actionPackage" namespace="/actionPackage" extends="struts-default" >
		<action name="login" class="loginAction" method="execute">
			<result name="success">/WEB-INF/index.html</result>
			<result name="error" type="redirect">/login1</result>
		</action>
</package>
注意:重定向时,我用了斜杠/,也就是说,要寻找的action已经不在当前的命名空间了,跳转去了别的命名空间,默认的那个!

重定向配置:

<package name="default" namespace="/" extends="struts-default">
    	<action name="login1">
			<result>/login.html</result>
		</action>
</package>
好了,这样js的获取路径就没有之前的那个命名空间了!

不知道有没有别的方法,欢迎踢楼!




带命名空间的action再次返回原来页面,命名空间引起的错误

标签:j2ee   struts   url   namespace   

原文地址:http://blog.csdn.net/u012453619/article/details/40557953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!