PPR : oracle的一種局部頁面刷新技術,在此之前只有java的js腳本可以實現(xiàn)此功能,現(xiàn)在ppr技術,并不是支持所有的瀏覽器,他現(xiàn)在僅僅支持的瀏覽器版本為IE 5.5 以上, Mozilla 和Netscape 7
基本原理:
1 PPR是提供給一個局部需要刷新的頁面,所有不要使用PPR技術在一個大部分區(qū)域需要刷新的頁面上,還有就是不要使用PPR技術在一個內容需要花費長時間去查詢的區(qū)域上。
2 不同于整個頁面的重載,PPR并不關注頂層的頁面,只是對頁面中的小部分分割區(qū)域進行刷新。
3 PPR技術中,提交按鈕可以通過選擇列表或者是radio group組件被忽略掉。
4 在導航到一個不同title的頁面的時候,不要使用PPR,這時應該使用GO按鈕。
5 瀏覽器的歷史記錄里面不會跟蹤相關頁面的PPR區(qū)域中的信息。
6 在不支持PPR技術的瀏覽器中,PPR區(qū)域在被下載到本地之后會自動失效。
7 在執(zhí)行一個PPR的更新的時候,會有一段滯留時間:在這段時間內,頁面會有一個沙漏出現(xiàn),并且用戶不能在對頁面進行任何操作知道區(qū)域的內容被完全裝載。如果更新失敗的話,envent block將會被清空,然后頁面并不發(fā)生任何更改(即數(shù)據(jù)沒有被更新),用戶可以進行操作。開發(fā)人員可以定義各個PPR的刷新時間。這樣,每個區(qū)域就可以根據(jù)需要設定不同的刷新時間。event block很重要,由于PPR可以改變頁面的狀態(tài),因此頁面上的一些個并發(fā)的點擊或者是關鍵的入口處的狀態(tài)應該被保留下來。
8 當PPR更新失敗的時候,一個javascript的一個錯誤信息應該被拋出,例如更新失敗,服務器沒有相應,超時,或者網(wǎng)絡堵塞等。這個時候BLAF的一些消息不應該用在這中條件下,如果應用程序這麼做的結果可能導致用戶的數(shù)據(jù)丟失。所以用javascript是最安全的方法。
并不是所有的OAF控件都可以在PPR中發(fā)生變化的,具體如下
在頁面中不會發(fā)生改變的頁面元素
很多的頁面元素通常關聯(lián)到了頁面上,而不關心
遵照一些開發(fā)準則,頁面標題上的元素(除了Message Box)會保持不變,不會發(fā)生任何位置上的變化 ,與之不同的是在Ski下的一些元素會保持內容,但是在頁面上的位置會發(fā)生變化,會上下移動來適應頁面的內容,下面的一些元素永遠不會發(fā)生變化在PPR中:
- Branding
- Global buttons
- Tabs, Horizontal Navigation, SubTabs
- Locator elements: Breadcrumbs, Train, Next/Back Locator
- Quick links
- Page titles (first level header)
- Ski
- Page footer
- Separator lines between the Tabs and Page Title
大多數(shù)情況下下面的一些元素也不會發(fā)生變化,但是會上下移動,來適應頁面的其他元素的變化. 不過,有一些特殊的情況下會導致他們也發(fā)生變化:
- Side Navigation, unless it contains a Hide/Show control.
- Subtabs
- Contextual information
- Page-level action/navigation buttons
- Page-level Instruction text
- Page-level Page stamps
- Page-level Key Notation
可以在PPR中進行更改的頁面元素
大多數(shù)頁面上的其他的一些區(qū)域中的內容都會被獨立的添加,更改或者是刪除。包括:
- Section and table titles (subheaders)
- Section-level elements associated with a section title:
- Hide/Show link
- Instruction text
- Key notation
- Page stamps
- Label/data layout, including Action/Nav buttons, choice lists, and links.
- Tables and table elements
- HGrids
- Trees
- Graphs
- Content containers
- Tips and Hints
要啟用PPR功能在當前頁面,你必須創(chuàng)建一個OAF標準的應用屬性VO(PVO)該PVO包含了一個臨時屬性用來保存或者說是記錄需要變化的區(qū)域的Rendered屬性的狀態(tài),這個VO最終會包含一個單行,允許用戶在和頁面進行交互時進行初始化和更新,后面將會詳細描述怎樣將變化區(qū)域和該VO進行綁定,以檢測時候該區(qū)域是否需要顯示,你需要配置另外一個開關,通過改變該開關的值,來確定是否要觸發(fā)PPR事件。
PVO應該同其更級別的am創(chuàng)建在一個包中,注意對于一個AM你只能創(chuàng)建一個POV,命名規(guī)則如下:相關的am的名稱+PVO
這里要注意的是,創(chuàng)建之后的PVO在tuning屬性中必須勾選啟用鈍化功能,還有For All Transient Attributes選項。