注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Javado做Java

学习的点点滴滴http://blog.csdn.net/guorujian

 
 
 

日志

 
 
关于我

东北人! 狮子的獠牙、光速拳! 我很佩服163的办事认真,故乡一栏竟然能精确到乡,而且我们乡合并才不久。厉害!永远支持网易!

网易考拉推荐

jsf页面参数的传递及加载数据  

2008-01-17 10:42:35|  分类: 收藏篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

jsf页面参数的传递及加载数据

 

在同一个页面实现功能,可以用ActionListener或用Action过程指向自身。

在不同的页面之间导航,可以用Action或Action过程,用ActionListener来处理传递的参数,加载数据。

 

一般的流程是:向一个页面传递参数,并依参数对这个页面的数据进行初始化,加载数据,然后再在视图jsp中显示数据。当然,简单的页面不需要接受参数,甚至不用加载数据。

 

由一个页面向另一个页面传递参数方法:

a.在facesconfig.xml的配置文件中,向该页面的ManageredBean的ManageredProperty注入request的参数#{param.name}

 

b.先获取该页面的ManageredBean,在代码中向它设值。

//获取BackingBean

Object BackingBean= FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(context, "BeanName");

 

c.向request中设值,再在该页面的ManageredBean中读取。

//设request值

FacesContext.getCurrentInstance().getExternalContext.getRequestMap().put("someKey", "someValue"); 

//读request值

Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

String someValue = params.get(" id ");

 

d.设置ActionListener(一般用于处理页面部件的事件。)

 

e.设置Session(Application)或用作用范围为Session(Application)的ManagerdBean.(该两类Bean存活范围长,占用服务器资源,开销较大,不能大量使用。一般不用于向另一个页面传递参数。)

 

 

JSF页面初始化数据的方法(实际上是初始化它的BackingBean,让它依据不同的条件(参数)装载数据):  

1.在BackingBean的无参数的构造函数中初始化(如读取向它传递的Request等值、读取数据库或文件中持久的数据)

缺点:必须放弃ManageredProperty的注入,用Request来传递参数。因为构造函数先执行,然后再来注入属性值。

优点是:简单,易用,不易出错。且可以直接用标准Url方式调用,如/ok.jsf?name=john,与其它的java web程序好兼容。

 

2.利用ManageredBean的ManagerdProperty的值注入。包括注入Request参数 如#{parap.name}.在get或Set某一属性时,依据传递的参数来初始化数据。

(在set某个属性时初始化,容易产生有些属性还没有被注入初始化,而在get某个属性时初始化数据,又有可能该属性未被调用,则无法完成初始化工作了。)

 

3.在代码Action中转向前获取该页面的BackingBean,来初始化它。

缺点是:依赖于代码Action,不能直接用URL。容易产生BackingBean中的相互依赖。

 

4.用ActionListener侦听某个Action执行后,再来解析Request参数或jsf部件值,来加载数据。

  评论这张
 
阅读(112)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017