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.
EBS OAF 开发中 URL中的标记、加密和编码,布布扣,bubuko.com
原文:http://blog.csdn.net/tavor/article/details/23971889