继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

OAF打开新的窗口

千岁不倒翁
关注TA
已关注
手记 362
粉丝 60
获赞 386

OAF页面要新开窗口,可以在带有导航功能的Item,如link和button(非提交按钮),指定Target Frame属性为”_blank“,就可以新开窗口打开Destination URI属性指定的路径。

如果用户希望新开的窗口能隐藏地址栏、工具栏、菜单栏或者想控制窗口大小,那么在上面所说的Destination URI属性中使用

javascript:window.open(‘OA.jsp?page=XXX’,'<windowName>’, ‘<params>’)

 

注意:在对按钮的Destination URI属性使用Javascript的新开窗口时,需要在首选项中设置可访问功能为标准可访问性,否则Javascript将无法执行。

虽然以上的方法能够实现新开窗口,但还有很多的限制,比如如果在新开窗口前需要执行某些特定操作、或者新开窗口的URL是需要通过执行某些逻辑才能得到的,那么上面的方法就无法实现了。

在OAF中,Oracle不建议在OAF中使用Javascript,但是OAF还是提供了API用于执行Javascript:

?[Copy to clipboard]View Code JAVA

1234
           
OAPageContext.putJavascriptFunction(String name, String function)OAPageContext.removeJavascriptFunction(String name)OAPageContext.putJavascriptLibrary(String name, String library)OAPageContext.removeJavascriptLibrary(String name)
           

 

 

假设用户提交了请求(点击链接、提交按钮等等触发事件的情况)需要新开窗口,在processFormRequest方法中,按一下步骤进行:

1、首先执行pageContext.removeJavascripFunction()

这是非常重要的一点,因为一旦Javascript注册到OAPageContext之后,就一直存在于OAPageContext中,这样会导致每次页面的刷新时都会执行Javascript。

 

2、在特定的事件中,执行程序逻辑,注册Javascript到OAPageContext对象中

?[Copy to clipboard]View Code JAVA

123456789
           
if (pageContext.getParameter("Open") != null){  // 执行其它处理  ...   // 定义Javascript  String jScript = "window.open('OA.jsp?page=XXX')";  pageContext.putJavascriptFunction("FunctionName", jScript)}
           

 

注意:在调用putJavascriptFunction()时,必须指定Name参数,只有这样才可以调用removeJavascriptFunction()。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP