adf时间作用域_ADF:在任务流终结器中支持bean作用域

adf时间作用域

介绍
当我们需要在任务流消失之前做一些最终工作(干净的资源,紧密的连接等)时,这是使用任务流终结器的非常普遍的建议做法。 和往常一样,我们使用在任务流中声明的托管bean。 托管Bean可以具有不同的范围-请求,页面流,视图,支持Bean等。范围取决于该Bean实际用于什么。 当我们访问终结器中的backingBean范围托管的bean时,存在一个小问题。 让我们看看下面的示例。
我们有一个包含页面片段的有限任务流:
而且,我们在三个不同范围的任务流中对bean进行了管理-页面流,视图和backingBean:
<managed-bean id="__3"><managed-bean-name id="__5">FlowBean</managed-bean-name><managed-bean-class id="__4">view.BackBean</managed-bean-class><managed-bean-scope id="__2">pageFlow</managed-bean-scope></managed-bean><managed-bean id="__9"><managed-bean-name id="__6">ViewBean</managed-bean-name><managed-bean-class id="__7">view.BackBean</managed-bean-class><managed-bean-scope id="__8">view</managed-bean-scope></managed-bean><managed-bean id="__10"><managed-bean-name id="__11">BackBean</managed-bean-name><managed-bean-class id="__12">view.BackBean</managed-bean-class><managed-bean-scope id="__13">backingBean</managed-bean-scope></managed-bean>
在页面上,我们有三个按钮绑定到每个范围的托管bean:
<af:commandButton text="commandButton 1" id="cb1"action="go" binding="#{backingBeanScope.BackBean.button}"></af:commandButton><af:commandButton text="commandButton 1" id="cb2"  binding="#{viewScope.ViewBean.button}"/><af:commandButton text="commandButton 1" id="cb3"  binding="#{pageFlowScope.FlowBean.button}"/>
Bean类具有button属性和testString属性,用于指示是否分配了按钮:
private RichCommandButton button;public void setButton(RichCommandButton button){this.button = button;}public RichCommandButton getButton(){return button;}public String getTestString(){if (this.button == null)return "The button is not assigned";elsereturn "The button is assigned";}
当我们按下cb1时,我们进入return活动,并且终结器被执行:
public static String resolveExpression(String expression){FacesContext fc = FacesContext.getCurrentInstance();return (String) fc.getApplication().evaluateExpressionGet(fc, expression,String.class);}public void theFinalizer() 
{//Just to have test access to the managed beans//and to be sure we work with the same instancesSystem.out.println(resolveExpression("#{pageFlowScope.FlowBean.testString}")+" " + resolveExpression("#{pageFlowScope.FlowBean.button}"));System.out.println(resolveExpression("#{viewScope.ViewBean.testString}")+" " + resolveExpression("#{viewScope.ViewBean.button}"));System.out.println(resolveExpression("#{backingBeanScope.BackBean.testString}")+" " + resolveExpression("#{backingBeanScope.BackBean.button}"));
}
运行该应用程序,按cb1按钮,然后在系统日志中查看以下内容:
为按钮分配了RichCommandButton [UIXFacesBeanImpl,id = cb3]
为按钮分配了RichCommandButton [UIXFacesBeanImpl,id = cb2]
为按钮分配了RichCommandButton [UIXFacesBeanImpl,id = cb1]
一切似乎都还好。 任务流程已完成,在终结器中,我们使用正确的托管Bean实例。 在此测试中,使用Return活动正确完成了任务流。
现在让我们放弃我们的任务流程–只是离开任务流程所在的页面。 终结器也将执行,并查看系统输出:
为按钮分配了RichCommandButton [UIXFacesBeanImpl,id = cb3]
为按钮分配了RichCommandButton [UIXFacesBeanImpl,id = cb2]
未分配按钮
这意味着我们将使用backingBeanScope.BackBean的不同实例! 万一任务流过多,控制器在终结器中看不到正确的backingBeanScope,它为空,并且控制器创建BackBean的新实例。 同时pageFlowScope和viewScope工作完美。 因此,在任务流中使用backingBean范围管理的bean时要特别小心,尤其是在终结器中访问它们时。 但在任何情况下,你可以使用所描述的同样的伎俩以前的帖子 。
而已!
参考:来自ADF实践博客上的JCG合作伙伴 Eugene Fedorenko 在ADF任务流终结器中支持bean作用域 。

翻译自: https://www.javacodegeeks.com/2012/05/adf-backing-bean-scope-in-task-flow.html

adf时间作用域

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贴一段自动编译java,并混淆编译的代码

刚写的一个自动编译、混淆、打包jar的代码&#xff0c;做个记录 用到的NuGet&#xff1a; <?xml version"1.0" encoding"utf-8"?> <packages><package id"DotNetZip" version"1.10.1" targetFramework"net45&qu…

android jpush json,发送了正确的JPush json却报1002

问题描述&#xff1a;调用jPushClient.sendPush前将PushPayload转换成JSON串打印到日志上&#xff0c;检查日志上的JSON发现没有错误&#xff0c;但是response返回报{"error": {"message": "Missing parameter", "code": 1002}}, jpus…

Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明

在六月&#xff0c;我们在博客上发布了一个新的内部状态机&#xff0c;用于管理用户&#xff0c;计时器和引擎线程之间的交互。 现在&#xff0c;我们对该代码进行了另一次大的内部清理&#xff0c;以使其更易于阅读和理解。 如前所述&#xff0c;所有操作&#xff08;插入&am…

BZOJ 4517 组合数+错排

思路&#xff1a; 预处理错排 然后C(n,m)*s[n-m-1]就是答案了 特判n-m-1<0 //By SiriusRen #include <cstdio> using namespace std; #define int long long const int mod1000000007,N1000050; int cases,n,m,fac[N],s[N]; int pow(int x,int y){int res1;while(y){i…

鸿蒙os下载到电脑上,鸿蒙系统pc版下载2.0

鸿蒙系统pc版2.0是华为最新打造的系统&#xff0c;采用分布式操作系统&#xff0c;可以在华为各种设备上使用。华为鸿蒙2.0系统pc版可以适应全新的芯片&#xff0c;打造个性化的操作习惯&#xff0c;可以让用户使用更舒适&#xff0c;功能更强大。它是一个面向全场景的开源分布…

nodejs+vue+ElementUi房屋房产销售预约看房系统bqv00

完成房产销售系统&#xff0c;对房源的信息、用户信息及各种资料进行收集和科学的管理&#xff0c;该系统的功能基本可以满足当前市面上的小型房产企业对于房产销售的基本要求&#xff0c;收集各个地区的房源信息并进行分类管理&#xff0c;用户通过注册账号登录网站查询房源信…

16.条件控制语句

11.关于条件控制和语句&#xff0c;流程控制语句if...else 1)语法&#xff1a; 第一种结构&#xff1a; if(boolean表达式){ java语句&#xff1b; } 第二种结构&#xff1a; if(boolean表达式){ java语句; }else{ java语句; } 第三种结构&#xff1a; if(boolean表达式){ java…

使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试

从我以前的帖子继续在这里 &#xff0c;我想我已经了解了Java EE和也的Arquillian&#xff0c;并测试了一些新的&#xff08;和令人兴奋的&#xff09;事&#xff0c;我想与大家分享。 但是&#xff0c;在开始之前&#xff0c;我想首先请您注意以下几点&#xff08;这些纯粹是…

mysql配置以及性能优化(转)

MySQL配置文件my.cnf中文详解&#xff0c;附mysql性能优化方法分享 Mysql参数优化对于新手来讲&#xff0c;是比较难懂的东西&#xff0c;其实这个参数优化&#xff0c;是个很复杂的东西&#xff0c;对于不同的网站&#xff0c;及其在线量&#xff0c;访问量&#xff0c;帖子数…

android+完美的列表,android完美讲义.pdf

android完美讲义王骋QQPhoneMail• 感谢我的同事&#xff0c;陈操(横拓开源技术副总)&#xff0c;在他提供的资料乊上做了迚一步总结提炼。• 参考资料android sdk开发文档&#xff0c;IBM开发者&#xff0c;同时也感谢网络上的各位大侠• 这个ppt更多是总结&#xff0c;侧重亍…

ios framework 找不到.h_找不到好看的壁纸?上万张「高清壁纸」,都在iOS捷径里...

所需工具&#xff1a;iOS捷径获取方法&#xff1a;后台私信回复「363」不和大家废话&#xff0c;今天给大家分享一个超好用的ios壁纸捷径&#xff0c;用了它之后再也不怕找不到喜欢的壁纸了~将克拉壁纸的捷径链接在Safari浏览器打开&#xff0c;就会自动跳转到一个获取捷径的窗…

12306余票查询

https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date2017-04-02&leftTicketDTO.from_stationHXZ&leftTicketDTO.to_stationIZQ&purpose_codesADULT 转载于:https://www.cnblogs.com/jekaysnow/p/6657918.html

div内容用html语言写,html – 使用DIV作为另一个元素的背景

这里我用2个div做了一个例子&#xff1a;> .content,包含前端所需的一切> .background – 包含文本,图像和背景中的所有其他内容要将一个div包装在另一个div上(制作叠加层),你必须将它们放入相同的元素中,在本例中它是#wrapper div.放置位置&#xff1a;包装的相对宽度/高…

jetty 配置jndi_使用Jetty设置JNDI(嵌入式)

jetty 配置jndi我在开发工作区上运行嵌入式Jetty&#xff0c;从而节省了一些恶性的编译和部署周期。 我与Jetty的合作不多&#xff0c;易用性使我着迷于它。 我需要设置JNDI才能检索与数据库相关的活动的连接池。 尽管某些地方有完整的文档&#xff0c;但大多数都是分散的。 因…

auot lisp 选择集处理_离散量的计算机处理63_1Cv6

计算机语言运用--数值计算6-离散量的计算机处理63_1Cv6计算机&#xff1a;电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。计算机语言有低级语言-机器语言、汇编、高级语言-C/C/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。作为一…

bzoj 3928: [Cerc2014] Outer space invaders

$f[i][j]$表示消灭起始时间在$(i,j)$内的外星人所花费的最小代价。 考虑在这个区间内距离最远的外星人h&#xff0c;在他的区间中一定要选一个点要开一炮&#xff0c;而且这一炮可以顺便把其他跨过这个点的敌人消灭&#xff0c;剩下只需消灭没有跨过这个点的敌人。 枚举开炮时间…

HTML页面代码移动端和pc兼容,pc端网站如何实现移动端适配?

4、流动布局(fluidgrid)“流动布局”的含义是&#xff0c;各个区块的位置都是浮动的&#xff0c;不是固定不变的。.main{float:right;width:70%;}.leftBar{float:left;width:25%;}float的好处是&#xff0c;如果宽度太小&#xff0c;放不下两个元素&#xff0c;后面的元素会自动…

linkedblockingqueue 后 take 不消化_消化不良的成因及护理

疾病名称&#xff1a;消化不良就诊科室&#xff1a;消化内科疾病成因心理和精神的不良应激&#xff1a;患者的精神不愉快、长期闷闷不乐或突然受到猛烈的刺激等均可引起。不良饮食习惯&#xff1a;包括刺激性食物&#xff08;咖啡、浓茶、甜食、油腻、生冷等&#xff09;和不良…

功能与命令式编程。 Java 8中的斐波那契,素数和阶乘

有多种编程风格/范例&#xff0c;但是两种著名的风格是Imperative和Functional 。 命令式编程是最主要的范例&#xff0c;因为几乎所有主流语言&#xff08;C &#xff0c;Java&#xff0c;C&#xff03;&#xff09;都在推广它。 但是在最近几年中&#xff0c;函数式编程开始…

Yandex.Algorithm 2011 Round 2 D. Powerful array 莫队

题目链接&#xff1a;点击传送D. Powerful arraytime limit per test5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAn array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary subarray al, al  …