Jsf主页传值(无事件)到标签页后台bean的个人方法

本文讨论了如何在没有事件支持的情况下,将页面值传递至自定义标签页并绑定至后台Bean进行处理。通过自定义标签和EL表达式实现了动态值传递,并对比了value绑定和binding绑定的区别。

前几天遇到了一个需求-----将一页面中的值传到该页面的标签页中(自定义的)并绑到该标签页后台Bean中经行处理(主页与标签页分别为不同的bean),一般的传值我倒是有很多方法去实现,但都是必须要有事件来支持(如<a4j:actionparam assignTo="#{}">就必须在<a4j:a4j:commandLink>中),而我的需求是不允许存在事件的。我最后的解决办法是:

 

主页:<custombiz:businessSelectExtend workID="WP34" bizRender="bizInfoView,comButton"/>

标签页: <h:inputHidden value="#{workID}" binding="#{businessSelect.workID}"/>

 

说明:这里的custombiz:businessSelectExtend 是自定义标签,代表整个标签页。workID是要传的值,businessSelect.workID是标签页后台Bean的接受属性。在进入主页时后台可通过getWorkID()来获得值“WP34”,如果主页的workID也可以写EL表达式,这将使得标签页获得是动态的值。

 

感受:只要一进入该页面,Jsf就会自动调用setWorkID()方法将页面的"value"的内容(即主页workID的值)传给后台bean的workID属性.这就表明binding与value绑定的差别,value绑定在初始化时是依赖于后台bean的,也因此jsf的request范围的bean一刷新,value绑定的值就会为null.而binding在初始化是依赖的页面,在初始化时它会将页面的值将set进入后台bean.

个人觉得binding的有两个优点:

      1)不与value绑定冲突! 使得一个标签可以传值的功能,再加上Jsf的标签可以绑定的任意你想绑定的类的属性(听说struts只能帮定到页面特定的FormBean,灵活性较差).因而Jsf还是很强大的(可惜这是有代价的!!).

      2)由于binding到后台的是均是对象(UI**),Jsf对其进行了大量的封装使得后台对前台的控制力更加的强劲!!!

      3)value与binding的绑定最大区别个人认为是在初始化时,Jsf出发点的不同.value绑定的出发点是bean,因而在Jsf初始化时会将后台bean的值付到页面(由于bean的初始化,而jsf的声明周期说明bean在request范围时是重新构建的,因而bean初始化后值均为null或0).而binding正好相反,它的出发点是页面,当初始化时会在bean重新构建之后将上次页面的值付给后台bean.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值