OAF打开新的窗口
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()。
共同学习,写下你的评论
评论加载中...
作者其他优质文章