2015-11-04 60 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