EBS OAF 開發中 URL中的標記、加密和編碼

EBS OAF 開發中 URL中的標記、加密和編碼

(版權聲明,本人原創或者翻譯的文章如需轉載,如轉載用於個人學習,請註明出處;否則請與本人聯繫,違者必究)

標記

當你在聲明式的頁面定義中指定URL參數時,你可以直接指定文本也可以指定替代值的標記,這些標記在生成時會從控件所關聯的VO對象屬性中獲取值(這也就是說,這些控件必須綁定到一個VO對象上)。這個經常被使用,比如,表中的一列要把主鍵值傳入到詳細頁面用於查詢。

標記替代示例(使用VO對象屬性名”OrderNum”):

OA.jsp?OAFunc=FWK_TBX_T_PO_PAGE&order={@OrderNum}


標記的類型

標記使用一個特殊的字符前綴來告訴OAF框架如何在運行時決定它的值(注意編碼和加密的概念在後面有描述)

l  {!Attr} –在URL中放置{!}來加密屬性值(比如,

 OA.jsp?...&ssn={!SSN}&...

).

使用OAPageContext.getParameter("ssn")返回的是解密後的參數值。

l  {@Attr} –在URL中放置{@}來對屬性值進行編碼(比如, OA.jsp?...&addr={@EmpAdd}&...).

使用OAPageContext.getParameter("addr")返回的是解碼後的參數值。

l  {$Attr} –一般的替代標記(無編碼或者加密),因此你自己要確認替代值不會打亂URL。

l  {@@RETURN_TO_MENU} –就完全像演示的一樣可以用於指定一個應用組件的Destination URI屬性來把用戶返回到EBS 個人主頁頁面上去。當進行一個JSP跳轉時如果你需要指定這個的話,那麼這個的相應常量值是OAWebBeanValues.RETURN_TO_MENU_URL

l  {@@RETURN_TO_PORTAL} ––就完全像演示的一樣可以用於指定一個應用組件的Destination URI屬性來把用戶返回到一個已運行的門戶頁面。當進行一個JSP跳轉時如果你需要指定這個的話,那麼這個的相應常量值是OAWebBeanValues.RETURN_TO_PORTAL_URL

 

編碼

你爲請求參數指定的所有值都必須遵守HTTP語法規則.比如,你不能傳遞一個包含空格的URL參數值;下面的參數值會引起一個運行時錯誤當相應的URL被訪問到時: buyerName=John Doe.

要解決這個問題,我們需要對這些值進行編碼,這意味着,編碼方法會使用標準的替代值來代替有問題的字符,就像下面的示例演示的: buyerName=John%20Doe.

l  當OAF框架添加參數到請求中時(比如,form字段值),它會自動對其編碼。

l  當你在調用setForward*方法過程中把參數放入請求時,OAF框架也會自動對這些值進行編碼.

l  當你往你自己組裝的URL中放置參數時(如果,比如,你通過調用setDestination方法來爲一個bean設置URL),你必須爲所有可能包含無效字符的字符串部分進行編碼.要這麼做的話,你需要傳遞這個字符串到oracle.apps.fnd.framework.webui.OAUrl工具類的encode方法中.

小技巧:如果你手工設置一個不會包含無效字符的URL參數值(比如,”value=Y”),那麼你不需要爲編碼這一步所費心。

l  當你使用OAPageContext.putParameter把值放到請求中時,如果需要的話你必須對這個字符串進行編碼。

當你調用OAPageContext.getParameter*方法時,OAF框架會自動對參數值進行解碼,除了以下幾種情況:

l  當你爲Javascript方法標記使用”#”字符時,OAF框架編碼標記值,但是當你調用pageContext.getParameter("<tokenName>")時,它不會自動對其解碼.你自己要解碼時,你需要對getParameter返回的值使用OAUrl decode方法。

l  當你調用putParameter方法放入一個編碼的值時,OAF框架不會對其解碼。在這種情況下,你也必須對getParameter返回的值使用OAUrl decode方法。

 

加密

加密是讓數據模糊混亂而使其難以辨認的過程。因爲URL請求參數值對用戶來說可能是可見的(隱藏的form字段值也是一樣的,如果用戶去查看HTML頁面源代碼),一般如果你在URL參數或者一個異常字段上放置了敏感數據,那麼你應該對其加密。

除了聲明式的,上面描述的基於標記的加密,OAF也在oracle.apps.fnd.framework.webui.OAPageContext提供了方法用於手工加密和解密任何你編程放入到請求中的參數值。

注意:關於URL和請求參數的更多信息,可以參考Oracle Application Framework URL and Request Parameters

 

URL 標記的缺陷

就像上面的描述的,如果要在URL中使用標記的話,那麼相應的控件就必須綁定一個VO,且的URL標記中只能使用這個VO中的屬性值,

不能使用EL語言,那麼R12.2對EL的擴展支持在這裏也不能使用,不能獲取session, transaction等等中的值。

也不能同時取多個VO中的屬性值。

注意:雖然相應的控件就必須綁定一個VO,還好的是OAF不是必須讓其綁定一個VO Attribute.


發佈了105 篇原創文章 · 獲贊 47 · 訪問量 86萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章