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
《PyPI官网下载:autosubmit-3.2.0b3.tar.gz——探索Python分布式自动化提交工具》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了大量可重复使用的Python软件包。在本次讨论中,我们关注的是...
资源来自pypi官网。 资源全名:autosubmit-3.0.0b16.tar.gz
通过DOM,我们可以找到特定的表单元素,如输入框(input)、按钮(button),然后设置值或触发事件。 4. **查找字符串方法**:在描述中提到的“查找字符串方法”,可能是指在HTML源码中搜索特定字符串,例如使用`...
语言:English 在设定的期限前20秒自动提交Google表单。 对于通过Google表单进行的在线测试很有用。 在设定的期限前20秒自动提交Google表单。 对于通过Google表单进行的在线测试很有用。
"autosubmit:湖州师范学院自动提交健康报告脚本" 这个标题揭示了我们讨论的主题是一个自动化脚本,用于自动完成湖州师范学院的学生健康报告提交任务。"autosubmit"是自动提交的意思,表明这是一个程序化的解决方案,...
WJX_Autosubmit 问卷星自动提交,Python3版本,2020年8月仍有效。采用构建随机答案,不支持验证码。 目前github上的可用版本并不多,同时个人接触较多问卷星的问卷,便萌生了用Python3的爬虫来完成问卷的想法,同时...
- `AutoSubmit`函数初始化计时器,并调用`StarAuto`函数启动计时过程。 - `StarAuto`函数实现倒计时逻辑,通过递减剩余时间(`remanent_time`),并在特定时间点更改状态栏显示以提醒考生考试剩余时间。 - 当剩余...
与autosubmit()类似,checkData()函数也已在新版本中被弃用。开发人员应考虑重构代码逻辑,使用更灵活的数据验证方法,如利用JavaScript内置的正则表达式进行数据格式检查,或者采用新的数据验证库来增强数据完整性...
标题中的“自动下单工具(Java)”指的是一个利用Java编程语言开发的应用程序,设计用于自动化在京东商城的购物过程,特别是在促销活动如双11期间,帮助用户快速完成下单操作。这种工具通常会模拟用户的购物行为,...
5. `customerPayPage.php`:客户支付页面,展示给用户进行支付操作的界面,可能包含支付方式选择、订单详情显示以及支付按钮的触发事件等。 6. `paymentCodePay.php`:可能是扫码支付或者支付码支付的相关逻辑,...
document.getElementById("autosubmit").submit(); ``` 在这些示例中,一旦受害者访问了包含payload的页面,他们的浏览器就会自动向目标服务器发送改变用户名的请求,而受害者可能完全不知道这一过程。 为了...
7. **安全考虑**:尽管这类插件能带来便利,但也可能涉及用户隐私泄露的风险。因此,选择一个信誉良好、安全可靠的插件至关重要。 总的来说,火车票订票插件通过自动化技术解决了购票难题,但同时也需要用户关注其...
以上两种方法都能有效地实现回车登录的功能,开发者可以根据项目需求和团队习惯选择合适的方式。在实际应用中,需要注意的是,为了提高可维护性和遵循最佳实践,一般不建议直接在body元素上绑定事件,而是应该选择更...
"gourla" href="javascript:void(0)" onclick="autosubmit(selectFrom(0,adurl.length-1));">点击此处</a>"); 这段代码实现了在文章内容中点击特定链接时,会弹出一个新的页面。它主要用于创建一种互动体验,比如...
本仓库发布的Script项目中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断. 本项目内所有资源文件,禁止任何公众号、自媒体...
function autoSubmit(){ var form = document.forms[0]; var actionPath = "?mo=phone"; form.action = actionPath; form.submit(); return true; } [removed] 如果需要两个提交按钮,type=””的属性值一个高为”...
这个开源项目旨在简化开发过程,使开发者能够在不离开JSF环境的情况下创建具有动态更新和异步交互的Web应用。Ajax4JSF 1.1.1版本是该项目的一个特定发布,包含了对JSF 1.2的支持,提升了性能和稳定性。 **jar文件...