目前,如果我填写表单并离开页面,当我返回表单时,表单条目仍然存在。是否可以防止这些条目被保存?
使用PS / SQL填充项目的默认值,但可以调整内容。
我尝试创建动态操作来清除“页面卸载”中的项目,但这没有做任何事情。这是正确的浏览器事件,还是我的执行错误?
更新:提供一些背景信息......
页数:
第3页可以通过第1页或第2页访问。
如果用户通过第2页(不同的表单)访问表单,他们将选择一个特定的值,这将用于填充第3页上的默认值(通过项目和PL / SQL函数体)。
如果用户通过第1页访问表单,则会运行相同的PL / SQL - 这可能导致表单项为空(NULL默认值)。
但是,当用户编辑项目(从默认值更改)时,这些值将在用户下次访问表单时保留。如何防止捕获此状态?
答案 0 :(得分:3)
您需要清除页面的缓存。这将清除页面上项目的会话状态,从而导致项目再次变为空白 您可能需要在多个位置添加此明文。如果您使用列链接访问页面,具有重定向,分支等的按钮The apex URL has a part which states which pages have to be cleared,您通常可以声明性地定义页清除的清除。
您还可以创建可以定义必须清除哪个页面(或多个页面)的流程。例如,如果您始终希望在进入页面时清除缓存,则无论您来自何处,都可以在页面上添加进程。
会话状态最终导致此行为:转到页面,更改某些内容,页面因任何原因而被提交并导致会话状态被保存。
通常,在通过向导生成的DML表单上,只有在使用" create"时才会清除缓存。来自其他位置的按钮(通常是覆盖的报告)。
Here is the (apex 5.0) documentation on session state and managing it.
答案 1 :(得分:0)
你可以用这样的东西来做,但首先你需要在页面中添加jQuery。我建议使用内容分发网络(CDN)。您可以编辑代码以清除表单类型中的值。我希望这可以帮到你!
$(document).ready(function() {
$("body")
.find("input").val("")
.end()
.find("select").val("-")
.end()
.find("textarea").val("");
};
});
答案 2 :(得分:-1)
在我们的起始页上,我们有三个块可以选择要转到的页面。 这些页面中有两个页面的搜索字段在打开时需要为空。 返回页面时,不应显示先前的搜索字符串。 我们使用此查询来显示三个块:
SELECT 'Block 1' "CARD_TITLE"
, 'Show data app.1' "CARD_TEXT"
, apex_page.get_url(p_application => 103
,p_page => 5
,p_clear_cache => 5 ) "CARD_LINK"
, 'fa-search' "CARD_ICON"
, ' ' "CARD_SUBTEXT"
, 1 disp_seq
FROM dual
UNION
(对块2和3重复)。
参数p_clear_cache确保返回到第5页时其先前的内容被清除。