`

如何使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.0.0b16.tar.gz

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

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

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

    Autosubmit-crx插件

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

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

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

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

    湖州师范学院自动提交健康报告脚本 详情请移步至我博客

    JS控制表单提交的方法

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

    html5的手机端酒店预订日期选择日历插件.zip

    这是一款简单实用基于jQuery CSS3 html5实现的手机移动端入住日期和离店日期选择代码,手机端酒店预订日期选择日历... autoSubmit : false, inputTrigger : 'input_trigger1', theme : 'ta' }); [removed]

    leetcode不能提交-LCSubmit:LC提交

    leetcode不能提交自动提交 LeetCode 用法: python3 autoSubmit . py s1 . ini 其中s1.ini是配置文件,手动输入: 想要的问题 函数签名 默认返回参数 运行此文件时,将创建一个 testcases 文件夹来保存用于该特定...

    网络考试系统

    ).warning.style.visibility = &quot;visible&quot;end ifend functionfunction posit_scroll2() if window.event.srcElement.className=&quot;text1&quot; then posit=window.event.srcElement.innerHTML window....

    transloadit_xhr:Transloadit的xhr文件上传实现

    autoSubmit: false }); 这使得这个项目有些过时了。 但是,如果您想要一个轻量级的XHR实现,而没有官方jQuery插件的所有其他功能,那么此项目非常适合您。 例子: 首先在服务器后端构建参数和签名(以确保安全)...

    Memorable Information Rememberer-crx插件

    语言:English 自动完成令人难忘的信息表格,例如在英国网上银行上发现的那些 ...警告如果您是第一次设置帐户,建议避免AutoSubmit功能,直到您确信提交成功,重复失败的提交可能会锁定您的帐户。难忘的信息请求器将数

    Mojolicious-Plugin-Qaptcha:jQuery QapTcha的Mojolicious插件

    名称 Mojolicious :: Plugin :: Qaptcha-Mojolicious的jQuery QapTcha插件 概要 # Mojolicious $app-&gt;plugin('Qaptcha', { inbuild_jquery =&gt; 1, inbuild_jquery_ui =&gt; 1, ... autoSubmit =&gt; "true", qa

    stimulus-rails-autosave:一个自动提交Rails表单的Stimulus控制器

    刺激轨自动保存 入门 一个自动提交Rails表单的Stimulus控制器。 :books: 文献资料 请参阅。 :male_sign:‍:male_sign: 贡献 不要犹豫,通过修改或添加功能为项目做出贡献! 错误报告或请求请求是受欢迎的。...

Global site tag (gtag.js) - Google Analytics