`

如何使autoSubmit的控件也能触发Uncommitted Data Warning?

 
阅读更多

Adf提供了一个相当有用的功能,就是当页面上有数据发生变化之后,当用户试图离开此页面的时候,会弹出"Uncommitted Data Warning"的消息,让用户确认是否真的要离开该页面。

但是,当页面上存在编辑控件的autoSubmit属性设置为true的时候,改变这个控件的值,然后试图离开该页面时,不会弹出消息确认。

原因是当autoSubmit属性设置为true时,当该控件的值发生改变后,就会以异步的方式自动把新值提交到服务器端(依次经过JSF默认的生命周期的六个阶段),
当这个异步请求完成之后,那么该控件客户端的值就不在保留了,而服务器端的值也被更新了,因此,该控件也就不再是Dirty的了。

所以这个时候,当你在点击浏览器上的后退按钮,离开该页面的时候,也不会提示"Uncommitted Data Warning"的消息了。

所以需要如下的JS代码:

 

markDirty = function(dirtyFieldId) {
    return function(evt) {
        var txtDirty = AdfPage.PAGE.findComponentByAbsoluteId(dirtyFieldId);
        if (txtDirty != null) {
                txtDirty.setValue("dirty");
        }
    }
}

然后在autoSubmit的空间中插入如下的client listener.

 

<af:clientListener type="valueChange" method="markDirty('txtLocalDirtyFlg')"/>

详细参见:https://forums.oracle.com/forums/thread.jspa?threadID=2125354&tstart=0

 

上述方法对没有任何绑定的页面有效(所有的数据源都是通过manage bean获取,而不是绑定AM data control的方式),对于使用绑定AM data control方式的页面,有时候需要加入下面的代码到Cancel按钮的标签中(可能的原因是绑定的data Control是作为Reference,而不是需要更新的Data Control,比如说,只是进行条件过滤的下拉列表):

 

checkUncommittedData = function(dirtyFieldId) {
    return function(evt) {
        var txtDirty = AdfPage.PAGE.findComponentByAbsoluteId(dirtyFieldId);
        AdfPage.PAGE.setDataDirty(txtDirty.getValue() != null && txtDirty.getValue() != "");
    }
}

 

<af:clientListener method="checkUncommittedData('pt1:txtLocalDirtyFlg')" type="click"/>
分享到:
评论

相关推荐

    12306AutoSubmit.user.js

    12306AutoSubmit.user.js

    PyPI 官网下载 | autosubmit-3.2.0b3.tar.gz

    《PyPI官网下载:autosubmit-3.2.0b3.tar.gz——探索Python分布式自动化提交工具》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了大量可重复使用的Python软件包。在本次讨论中,我们关注的是...

    PyPI 官网下载 | autosubmit-3.0.0b16.tar.gz

    资源来自pypi官网。 资源全名:autosubmit-3.0.0b16.tar.gz

    C#模拟自动提交

    通过DOM,我们可以找到特定的表单元素,如输入框(input)、按钮(button),然后设置值或触发事件。 4. **查找字符串方法**:在描述中提到的“查找字符串方法”,可能是指在HTML源码中搜索特定字符串,例如使用`...

    Autosubmit-crx插件

    语言:English 在设定的期限前20秒自动提交Google表单。 对于通过Google表单进行的在线测试很有用。 在设定的期限前20秒自动提交Google表单。 对于通过Google表单进行的在线测试很有用。

    autosubmit:湖州师范学院自动提交健康报告脚本

    "autosubmit:湖州师范学院自动提交健康报告脚本" 这个标题揭示了我们讨论的主题是一个自动化脚本,用于自动完成湖州师范学院的学生健康报告提交任务。"autosubmit"是自动提交的意思,表明这是一个程序化的解决方案,...

    WJX_Autosubmit:问卷星问卷自动提交,Python3版本,2020年8月仍有效

    WJX_Autosubmit 问卷星自动提交,Python3版本,2020年8月仍有效。采用构建随机答案,不支持验证码。 目前github上的可用版本并不多,同时个人接触较多问卷星的问卷,便萌生了用Python3的爬虫来完成问卷的想法,同时...

    网络考试系统

    - `AutoSubmit`函数初始化计时器,并调用`StarAuto`函数启动计时过程。 - `StarAuto`函数实现倒计时逻辑,通过递减剩余时间(`remanent_time`),并在特定时间点更改状态栏显示以提醒考生考试剩余时间。 - 当剩余...

    cognos javascript

    与autosubmit()类似,checkData()函数也已在新版本中被弃用。开发人员应考虑重构代码逻辑,使用更灵活的数据验证方法,如利用JavaScript内置的正则表达式进行数据格式检查,或者采用新的数据验证库来增强数据完整性...

    自动下单工具(Java),已在京东商城验证

    标题中的“自动下单工具(Java)”指的是一个利用Java编程语言开发的应用程序,设计用于自动化在京东商城的购物过程,特别是在促销活动如双11期间,帮助用户快速完成下单操作。这种工具通常会模拟用户的购物行为,...

    京东支付修改版本

    5. `customerPayPage.php`:客户支付页面,展示给用户进行支付操作的界面,可能包含支付方式选择、订单详情显示以及支付按钮的触发事件等。 6. `paymentCodePay.php`:可能是扫码支付或者支付码支付的相关逻辑,...

    Web应用安全:CSRFpayload.pptx

    document.getElementById("autosubmit").submit(); ``` 在这些示例中,一旦受害者访问了包含payload的页面,他们的浏览器就会自动向目标服务器发送改变用户名的请求,而受害者可能完全不知道这一过程。 为了...

    火车票订票插件,支持自动提交订单

    7. **安全考虑**:尽管这类插件能带来便利,但也可能涉及用户隐私泄露的风险。因此,选择一个信誉良好、安全可靠的插件至关重要。 总的来说,火车票订票插件通过自动化技术解决了购票难题,但同时也需要用户关注其...

    jquery 实现回车登录详解及实例代码

    以上两种方法都能有效地实现回车登录的功能,开发者可以根据项目需求和团队习惯选择合适的方式。在实际应用中,需要注意的是,为了提高可维护性和遵循最佳实践,一般不建议直接在body元素上绑定事件,而是应该选择更...

    点击文章内容处弹出页面代码

    "gourla" href="javascript:void(0)" onclick="autosubmit(selectFrom(0,adurl.length-1));"&gt;点击此处&lt;/a&gt;"); 这段代码实现了在文章内容中点击特定链接时,会弹出一个新的页面。它主要用于创建一种互动体验,比如...

    Auto-jd:京东jd,低调使用,勿传播!(不定时更新脚本),gitee备份地址

    本仓库发布的Script项目中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断. 本项目内所有资源文件,禁止任何公众号、自媒体...

    JS控制表单提交的方法

    function autoSubmit(){ var form = document.forms[0]; var actionPath = "?mo=phone"; form.action = actionPath; form.submit(); return true; } [removed] 如果需要两个提交按钮,type=””的属性值一个高为”...

    ajax4jsf-1.1.1.jar.zip

    这个开源项目旨在简化开发过程,使开发者能够在不离开JSF环境的情况下创建具有动态更新和异步交互的Web应用。Ajax4JSF 1.1.1版本是该项目的一个特定发布,包含了对JSF 1.2的支持,提升了性能和稳定性。 **jar文件...

Global site tag (gtag.js) - Google Analytics