2015-11-04 59 views
1

目前,如果我填充表单并离开页面,则表单条目在我返回到表单时仍然存在。是否可以防止这些条目被保存?Apex - 离开页面时(也在重定向时)清除表单

项目的默认值使用PS/SQL填充,但内容可以调整。

我试着创建一个动态的动作来清除'Page Unload'上的项目,但是这并没有做任何事情。这是正确的浏览器事件,还是我只是实现错误?


更新:提供一些背景...

页:

  1. 首页
  2. 形式
  3. DML表(插入) - 我想任何修改为不存储

页3可经由第1页或第2页。

如果用户访问经由第2页(一个不同的形式)的形式被访问,它们将已经选择了一个特定的值,这是用来填充默认值在第3页(通过项目和PL/SQL函数体)。

如果用户通过页面1访问表单,则会运行相同的PL/SQL - 这可能会导致表单项为空(NULL默认值)。然而,当用户编辑项目(从默认值更改)时,这些值将在用户下一次访问表单时持续存在。我怎样才能防止这种状态被捕获?

+0

你能分享一些表单页面上的更多信息吗?这意味着什么?你如何“回归”它? – Tom

+0

@Tom我已经用更多的上下文更新了这个问题。 – PidgeyBAWK

回答

2

您需要清除页面缓存。这将清除页面上项目的会话状态,从而导致项目再次为空。
您可能需要在多个位置添加此清除。如果您已使用列链接访问该页面,则可以使用重定向,分支等按钮The apex URL has a part which states which pages have to be cleared,并且您通常可以声明方式定义页面缓存的清除。 Link builder apex 5

您还可以创建过程,您可以在其中定义要清除的页面(或多个页面)。例如,如果您始终希望在进入页面时清除缓存,则无论您来自何处,都可以在页面上添加一个进程来完成此操作。
Process type apex 5 会话状态最终是导致此行为的原因:转到页面,更改一些内容,页面因任何原因被提交并导致会话状态被保存。
通常,在通过向导生成的DML表单上,仅当使用来自其他位置(通常是覆盖报表)的“创建”按钮时才会清除缓存。

Here is the (apex 5.0) documentation on session state and managing it.

0

你可以这样做,但首先你需要添加jQuery到你的页面。我建议使用内容交付网络(CDN)。您可以编辑代码以清除表单类型中的值。我希望这可以帮助你!

jQuery CDN example

$(document).ready(function() { 
    $("body") 
     .find("input").val("") 
     .end() 
     .find("select").val("-") 
     .end() 
     .find("textarea").val(""); 
    }; 
}); 
+0

谢谢,我会放弃它。我假设这将在任何预先使用默认值填充表单的PS/SQL之前运行? - 我不知道如何引入jQuery会与底层的东西交互/冲突,例如我已经看到了'apex.jQuery(document).ready(function()'在网络上浮动。 – PidgeyBAWK

+0

您可以使用'$ .noConflict();',但是您需要将** $ **符号切换为* * jQuery **。例如​​:'$ .noConflict(); jQuery(document).ready(function()...' –

+1

@PidgeyBAWK你不需要在页面上“引入”jquery,它没有Apex与jQuery捆绑在一起,在4.2版本中它使用了jQuery版本1.7,除非你有一个非常具体的用例,''apex.jQuery.ready()'函数也是一样,你不应该添加其他版本。可以简单地使用“页面加载”的动态操作,此外,这个答案实际上并不包括顶点用例,这不是“清除”页面的方法,因为值仍然会驻留在会话中 – Tom