壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3368|回复: 4

[OAF] OAF 页面跳转打开新窗口 并调用java代码

[复制链接]
发表于 2011/7/24 13:19:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
请问 如何在点击按钮 打开新的窗口的时候调用java 函数 我用的不是submit 应为submit没有[img]file:///C:/Users/GaozhiSoft/Documents/Tencent%20Files/522493876/Image/rabgil_gnkhy9u7lxn[g@ay.jpg[/img]不能打开新窗口

 楼主| 发表于 2011/7/24 13:21:03 | 显示全部楼层
应为submit没有  TargetFrame  =_blank
发表于 2011/7/24 13:50:16 | 显示全部楼层
你说的是Java函数还是Javascript函数?
如果是Java函数,那你写一个OAF页面,将此页面注册为一个功能,就可以从OAF页面跳转到这个这新的页面了啊,在这个新的页面的CO里的ProcessRequest方法里调用你的Java函数不就可以了?
 楼主| 发表于 2011/7/24 15:35:28 | 显示全部楼层
llpzll 发表于 2011/7/24 13:50
你说的是Java函数还是Javascript函数?
如果是Java函数,那你写一个OAF页面,将此页面注册为一个功能,就可 ...

有没有办法点击按钮的时候(是button不是submit button) 调用本页面的CO 中的方法?

我想在本页面的CO里调用Oracle AMimpl中的方法获取一些参数的值 如果到跳转后的页面的CO中
调用AMimpl 获取的值就变成空了。
发表于 2011/7/25 15:29:26 | 显示全部楼层
本帖最后由 llpzll 于 2011/7/25 16:58 编辑

如果是button,我觉得是没办法即直接调用本页面CO里的方法又要在新窗口中打开OAF页面的,因为button发起的是HTTP GET请求,而不是像submit button是HTTP POST。即使使用了fireAction,也只能在processFormRequest中处理POST请求,Destination URI也不会发挥作用(关于这一点有点儿淡忘了,欢迎指教)。如果非要这样搞,有三种方法:
1 如果你两个页面用的AM不同,可以把Destination URI设置为自身页面的URL,然后加上retainAM=Y,以及一个标识参数fromPage=thisPage,这样在CO的processRequest中可以根据fromPage判断是否调用JAVA方法,然后再跳转到你需要的页面,这种方法光是感觉就很怪异,不推荐。
2 如果你两个页面用的AM相同,那么可以在Destination URI中加上参数retainAM=Y,这样两个页面可以使用同一个AM的Instance,这样你调用Oracle AMimpl获取的值就应该不为空了。
3 动态的用代码生成你的button,将你要获取的参数,直接添加到Destination URI中,在新的页面CO中直接通过getParameter获得。
对于这种在新窗口中打开页面,我觉得最好不要这样吧。因为OAF有个back navigation机制,你在新窗口中打开了一个OAF页面,这会造成pageCounter(OAPC)参数增加,当你关闭这个新窗口,重新去操作原窗口中的页面时,由于原页面的pageCounter(OAPC)参数并未随服务器端的pageCounter改变,这会造成back navigation。这时,OAF会在处理你的请求前,重新执行初始化该页面,也就是执行processRequest,这种行为有时会造成你的AM状态与你期望的不一直,比如你的某个VO的当前行改变了等。如果想避免这些情况,你就得通过pageContext.isBackNavigationFired()方法是否发生了BackNavigationFired,并在发生的情况下做一些特殊处理或者直接抛出错误信息给用户。总之,在新窗口中打开OAF页面再回去操作原窗口中的OAF页面,可能会带来一些问题,因此,我觉得这种方法最好不用,不然有可能给你带来很难发现的bug。
以上是我个人观点,新手,欢迎大家交流,共同提高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 07:15 , Processed in 0.015091 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表