目前,如果我填写表单并离开页面,当我返回表单时,表单条目仍然存在。是否可以阻止保存这些条目?
项目的默认值是使用 PS/SQL 填充的,但可以调整内容。
我尝试创建一个动态操作来清除“页面卸载”上的项目,但这没有做任何事情。这是正确的浏览器事件,还是我的实现有误?
更新:提供一些上下文......
页面:
- 首页
- 表格
- DML 表单(插入)- 我希望不存储任何修改
第 3 页可以通过第 1 页或第 2 页访问。
如果用户通过第 2 页(一种不同的表单)访问表单,他们将选择一个特定值,这将用于填充第 3 页上的默认值(通过项目和 PL/SQL 函数体)。
如果用户通过第 1 页访问表单,将运行相同的 PL/SQL - 这可能导致第 3 页表单项为空(NULL 默认值)。
但是,当用户编辑第 3 页项目(从默认值更改)时,这些值将在用户下次访问表单时保留。如何防止捕获此状态?
最佳答案
您需要清除页面缓存。这将清除页面上项目的 session 状态,从而导致项目再次为空。
您可能需要在多个位置添加此清除。如果您使用列链接访问页面、带重定向的按钮、分支等。The apex URL has a part which states which pages have to be cleared ,并且您通常可以声明性地定义页面缓存的清除。
您还可以创建流程,您可以在其中定义必须清除的页面(或页面)。例如,如果你总是希望在进入页面时清除缓存,无论你来自哪里,你都可以在页面上添加一个进程来清除缓存。
session 状态最终是导致此行为的原因:转到页面,更改一些内容,页面出于某种原因被提交并导致 session 状态被保存。
通常,在通过向导生成的 DML 表单上,只有在使用来自另一个位置(通常是覆盖报表)的“创建”按钮时才会清除缓存。
Here is the (apex 5.0) documentation on session state and managing it.
关于javascript - Apex - 离开页面时清除表单(也在重定向时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530567/