JSP页面弹出模态窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP页面弹出模态窗口相关的知识,希望对你有一定的参考价值。

问题描述:
在一张jSP页面上有许多输入框和下拉列表框。当用户修改这些值,后台会立即保存。在保存的过程中,后台需要做一些逻辑处理,比较耗时。
如果遇到server比较慢的情况,用户又不断的修改JSP页面的输入框和下拉列表框,这样就会导致server出现异常。

解决办法:
1.增加保存按钮,当用户修改完所有项,点保存按钮才真正开始保存。
2.在用户修改一个值之后,后台开始保存,这是弹出一个模态窗口(比如旋转的图片或进度条),原来的JSP页面就不能操作了,当保存结束,模态窗口自动消失。

我的问题:
第一种方式实现起来比较简单,但是增加了用户的操作次数(还要点一次保存按钮),和其他界面的操作风格也不一样。所以不可取。

现在想实现第二种方式。但不知道该如何做,这就是我的问题所在。比如用javascript+DIV该如何实现?谢谢!

jsp中的模态窗口是通过调用js方法弹出的。
js中的弹出方法:
<script type="text/javascript">
function openWin(src, width, height, showScroll)
window.showModalDialog (src,"","location:No;status:No;help:No;dialogWidth:"+width+";dialogHeight:"+height+";scroll:"+showScroll+";");

</script>
参数说明:
sURL -- 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments -- 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过
window.dialogArguments来取得传递进来的参数。
sFeatures -- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
----------------
1. dialogHeight: 对话框高度,不小于100px
2. dialogWidth: 对话框宽度。
3. dialogLeft: 离屏幕左的距离。
4. dialogTop: 离屏幕上的距离。
5. center: yes | no | 1 | 0 : 是否居中,默认yes,但仍可以指定高度和宽度。
6. help: yes | no | 1 | 0 : 是否显示帮助按钮,默认yes。
7. resizable: yes | no | 1 | 0 [IE5+]: 是否可被改变大小。默认no。
8. status: yes | no | 1 | 0 [IE5+]: 是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
9. scroll: yes | no | 1 | 0 | on | off :是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10. dialogHide: yes | no | 1 | 0 | on | off :在打印或者打印预览时对话框是否隐藏。默认为no。
11. edge: sunken | raised :指明对话框的边框样式。默认为raised。
12. unadorned: yes | no | 1 | 0 | on | off :默认为no。
参考技术A 使用 dhtmlxwindow 控件很简单。

其实点击保存按钮后,你可以把保存按钮 禁用,待后台返回信息后,在更改为可用状态。

手写 js+div 也比较简单。
代码,自行百度搜索 “div js 遮罩层”本回答被提问者和网友采纳

大多数非hacky方式在未经授权导航到页面时弹出模态窗口

我的目标是,如果用户点击未经授权的页面链接(或POST表单),则会弹出一个模态窗口弹出窗口,因为它比重定向到一般错误页面更好的用户体验。

我所做的就是实施

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        // ... 
    }

因此,如果请求是非AJAX请求,那么它会重定向到同一页面(给出停留在同一页面上的错觉)并使用"forbiddenRedirect=true"附加查询字符串,然后JavaScript打开错误模式。我想要比使用查询字符串更好的方法。据我所知,JavaScript无法访问响应标头,只能访问URL。这就是我使用查询字符串解决方案的原因。但也许在MVC中我可以通过某种方式重定向并传递基本控制器可识别的某种令牌,然后像ViewBag.IsRedirectFromUnauthorizedAction = true一样向视图包添加内容。

有什么建议?

答案

用户永远不应该访问他们可以发布数据而不经过身份验证和授权的页面!

如果您的用户可以访问他们可以发布信息的表单(让我们使用用户个人资料页面),他们应该在他们可以到达之前进行身份验证。因此,例如,在允许用户访问“编辑配置文件”页面之前,您将引导用户进入“登录”页面。一旦他们对自己进行了身份验证并且您已经检查过他们有权​​在特定页面上执行POST,那么您需要向他们提供表单。

但如果他们的会议超时怎么办?

如果用户进行身份验证并访问该页面,然后他们的会话超时,您应该将他们重定向回登录页面,再次提示他们输入凭据并拒绝他们的发布请求。在理想情况下,您应该每隔30秒左右在后台运行一个AJAX函数。如果他们闲置一段时间(比方说5分钟),那么你可以假设他们关闭了浏览器或者无人看管他们的PC。此时,要么询问用户(通过模态窗口)是否要保持登录状态,要么在30秒内注销。如果他们单击“保持登录状态”按钮,请将其保留。如果他们没有回答,您可以将其注销并自动将其重定向回“登录”页面。

以上是关于JSP页面弹出模态窗口的主要内容,如果未能解决你的问题,请参考以下文章

使用模态弹出窗口在另一个 aspx 页面中显示 aspx 页面

大多数非hacky方式在未经授权导航到页面时弹出模态窗口

可拖动的非模态弹出窗口 Jquery Mobile

Parsley js:如何验证模态弹出窗口内的输入字段并在模态本身内显示错误消息

如何在 vue 中创建模态弹出窗口

为什么在重新加载而不是窗口加载后引导模态弹出窗口。可能是什么原因?