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

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

登陆页面表单提交,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的获取路径就没有之前的那个命名空间了!

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

时间: 2024-10-09 07:12:59

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

nginx+tomcat 对于action请求返回404页面

今天给客户做需求,基本的nginx+tomcat,tomcat之前就有,8081端口的,现在客户有了域名,希望可以用域名直接访问,那就只有两种方法:改tomcat端口,8081改为80,要么就是用第三方web转发,比如使用nginx,这次我就给客户使用nginx,结果客户在访问一个注册页面tMallUser!toRegistPage.action报错404 我有单独用tomcat测试了页面,可以打开,没问题,那问题一定就是nginx配置转发有问题. server {     listen    

dedecms自定义表单提交成功如何返回当前页面

dedecms自定义表单提交成功如何返回当前页面 Dedecms是现在比较常用的CMS,利用dedecms建站的朋友们,肯定会做一个提交表单,对于会技术的童鞋来说,做这样一个简单的表单,是很容易的事情dedecms的自定义表单非常的灵活,无论是用户留言.在线报名.信息收集统统都可以通过自定义表单完成. 织梦自带的自定义表单提交过后会自动跳转到网站首页,可还是有很多人希望提交过后,返回当前页面,或者返回是其他的页面,等等;我们会根据自己需要实现的功能不同,而做相应的修改;下面雨田SEOER来吐槽一

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

如何获得web view上的关闭按钮返回指定页面

最近遇到一个问题,注册页面是由客户提供web页面来注册的,这册后跳转到注册成功的web页面,这时候用户只提供了一个web页面,上边有一个按钮 可是点击这个按钮服务器端是不给任何回复数据的,也没有要跳转的页面,也就是说这只是一个web页面的按钮,如何才能给这个按钮添加一个事件,跳转到登录页面呢? 先给图: : 这两个都是webview中由服务器申请的页面: 想了2个方法: 一.检测由第一个页面进入第二个页面时的链接,在进入第二个页面时,在页面上添加一个透明的按钮,覆盖web上的按钮,这样可以添加返

走入asp.net mvc不归路:[5]Action的返回

asp.net mvc提供了多种返回方式,一方面使得视图可以重用,另一方面灵活强大,有直接返回视图,返回Json,返回文件流,返回到相同Controller的Action,返回到另一个Controller等. 1 最常见的是直接返回视图,这样可以直接返回相应View文件夹下的与Action名称一样的视图:并且这个View方法,可以带参数,图示带了视图的Model参数,可以作为显示列表时使用 2 还可以是返回相同Controller下的Action,RedirectToAction(),即直接返回

(七)Action 的返回值 ActionResult

1. 当返回一个页面,return View();  View() 方法的返回值是 ViewResult 类型,继承自 ActionResult. 2. 当重定向一个页面, return Redirect("Path"); Redirect() 方法的返回值类型是 RedirectResult. 3. 直接返回文本内容:ruturn Content("value"); Content() 方法的返回值类型是 ContentResult. 4. 当返回一个文件的时候,

[Spring boot] web应用返回jsp页面

同事创建了一个spring boot项目,上传到svn.需要我来写个页面.下载下来后,始终无法实现在Controller方法中配置直接返回jsp页面. 郁闷了一下午,终于搞定了问题.在此记录一下. 目标:在Controller方法中配置直接返回jsp页面 项目中添加src/main/webapp文件夹,没什么好说的. 下面详细介绍@Controller注解和@RestController注解的不同实现方法. @Controller注解 1. application.properties文件中配置

SpingMVC中利用BindingResult将错误信息返回到页面中

SpingMVC中利用BindingResult将错误信息返回到页面中. ActionFrom中: private String name; private String password; get()/set()....... JSP中: <form:form id="T51000ActionForm" name="T51000ActionForm" modelAttribute="t51000ActionForm"  method=&q

js获取action中返回的值

因为老是忘记,所以记录下, var hostname = '${hostname}'; hostname= eval("("+hostname+")"); var name = hostname.name 直接这样子获取从action中返回的hostname,转为json格式,即可对其进行操作