java重定向layui请求,layer.js 弹出层提交form表单,action重定向

layer.js,一个jquery的插件,可以用它来做信息提示,弹出层等。

使用layer.js做弹出层时,在弹出层里直接提交form表单,返回的画面仍然停留在弹出层里。 我们想在弹出层里提交form表单后关闭弹出层,并跳转到另一个画面。

0.引入layer.js

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

pageContext.setAttribute("basePath", basePath);

%>

1.在父画面里定义一个隐藏的div

2.在父画面打开弹出层,并定义弹出层关闭时要回调的函数

layer.open({

type: 2,

title: ['导入信息', 'background-color: #00bb9d;text-align:center;font-size:18px;'],

shadeClose: true,

shade: false,

maxmin: true,

area: ['893px', '600px'],

content: 'abc/xxx.action?id='+id,

end: function(){

// 如果是通过单击关闭按钮关闭弹出层,父画面没有此表单

if($("#popupForm").length === 1){

$("#popupForm").submit();

}

}

});

3.弹出层里提交form表单的时候将form表单复制到父画面里,然后关闭弹出层。

$(function(){

$("#saveBtn").click(function(){

// 将表单复制到父画面,在父页面的回调函数里提交表单

var popupForm= $(parent.document.body).children("div[id='popupFormDiv']").append($("#popupForm"));

var index = parent.layer.getFrameIndex(window.name); //获取窗口索引

parent.layer.close(index);

});

});

此处也可以不关闭弹出层。 直接popupForm.children("form[id='adduserForm']").submit() ;

但是这样提交的话,弹出层会在页面上会停留一段时间,后台响应时间越长,弹出层在页面上停留的时间也越长。 不建议这样做。

这里说一个注意点。动态构造一个form表单一定要append到body元素里,不然提交不了。

$('

').appendTo('body').submit();

我们这里当然是要把form表单插入到父画面的body元素里,而不是弹出层页面的body元素里。

弹出层右上角有一个关闭按钮,如果点击这个按钮,我们就没有机会将表单复制到父画面里的div里。 所以要在回调函数end里判断一下是否有popupForm这个表单。 然后提交这个表单即可。

$("#popupForm").length === 1

注意,这里不能这样判断:

if($("#popupForm")){

// to do

}

因为jquery对象总是会返回一个jquery集合,所以$("xxx")不可能为null,undefined等。

如果只是给父画面传一个值,官方有提到,只需这样:

parent.$('#parentIframe').text('我被改变了');

这个表示,给父画面 id为 parentIframe元素的text赋值。

可以debug看看,这里的parent就是window对象。

关于parent这个东西,可参考这篇文章:

*昵称:
*数量:
备注:

最后啰嗦一下: 如果你的action要重定向到另一个命名空间下的action,并且传递参数给那个action:

/cc

cc

${someId}

${resultMsg}

注意

bb所在的action里 至少有someId和resultMsg的getter

cc所在的action里至少有searchForm和resultMsg的setter。

searchForm类里要有someId的 setter和getter。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web开发中,服务重定向是常见的需求之一。Java提供了两种常用的服务重定向方式:forward()方法和sendRedirect()方法。它们都可以将请求重定向到不同的资源,但是它们之间有一些区别。 1. forward()方法 forward()方法可以将请求转发到另一个资源,例如JSP页面、Servlet或者HTML文件等。在转发请求时,浏览器并不知道正在进行的重定向过程,因为所有的重定向都是在服务器端进行的。要使用forward()方法,可以使用以下代码: ```java RequestDispatcher rd = request.getRequestDispatcher("/somePage.jsp"); rd.forward(request, response); ``` 在这个例子中,我们将请求转发到名为“somePage.jsp”的JSP页面,这个页面会显示在浏览器中。需要注意的是,forward()方法只能将请求转发到同一个Web应用程序中的资源。 2. sendRedirect()方法 sendRedirect()方法可以将请求重定向到另一个URL,例如其他Web应用程序或者外部网站。在重定向请求时,浏览器会收到一个新的URL,并将请求发送到这个URL。要使用sendRedirect()方法,可以使用以下代码: ```java response.sendRedirect("http://www.example.com"); ``` 在这个例子中,我们将请求重定向到名为“http://www.example.com”的URL。需要注意的是,sendRedirect()方法可以将请求重定向到同一个Web应用程序中的资源,也可以将请求重定向到其他Web应用程序或者外部网站。 3. 区别 使用forward()方法转发请求时,浏览器并不知道正在进行的重定向过程,因为所有的重定向都是在服务器端进行的。而使用sendRedirect()方法重定向请求时,浏览器会收到一个新的URL,并将请求发送到这个URL。因此,使用forward()方法可以保持URL不变,而使用sendRedirect()方法则会改变URL。 另外,使用forward()方法转发请求时,可以将请求转发到同一个Web应用程序中的资源,而使用sendRedirect()方法重定向请求时,可以将请求重定向到其他Web应用程序或者外部网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值