`
zengjinliang
  • 浏览: 307615 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jsf1.1如何使用ValueBinding类

    博客分类:
  • jsf
阅读更多
java 代码
  1. javax.faces.el.ValueBinding类表示一个对象,可以用它来访问由一个动作或值引用表达式所表示的属性。可调用javax.faces.application.Application类的getValueBinding方法,同时传入值引用,以此来获取一个ValueBinding的实例。     
  2.   
  3. ValueBinding类有4个方法:getType、getValue、setValue和isReadOnly。我们在以下的章节中讨论这些方法。   
  4.   
  5. 3.6.1  获取ValueBinding所表示的对象的类型   
  6. 调用Application类的getValueBinding方法需要传入一个值引用,返回值可能是一个JavaBean、一个JavaBean的属性或是另外一个对象。getType方法可返回ValueBinding所表示的对象的类型。下面是getType方法的签名:   
  7.   
  8. public abstract Class getType(FacesContext facesContext)   
  9.   
  10. throws javax.faces.el.PropertyNotFoundExcetpion;   
  11.   
  12. 比如,假设您的应用配置文件里有如下managed-bean标记:   
  13.   
  14. <managed-bean></managed-bean>  
  15.   
  16. <managed-bean-name></managed-bean-name>shoppingCartBean   
  17.   
  18. class>   
  19.   
  20. buydirect.ShoppingCartBean   
  21.   
  22. class>   
  23.   
  24. <managed-bean-scope></managed-bean-scope>session   
  25.   
  26.   
  27.   
  28. 则使用以下代码会在控制台输出表示ShoppingCartBean的类名:buydirect.ShoppingCartBean。   
  29.   
  30. FacesContext facesContext = FacesContext.getCurrentInstance();   
  31.   
  32. ApplicationFactory factory = (ApplicationFactory)   
  33.   
  34. FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);   
  35.   
  36. Application application = factory.getApplication();   
  37.   
  38. ValueBinding valueBinding =   
  39.   
  40. application.getValueBinding("shoppingCartBean");   
  41.   
  42. System.out.println(valueBinding.getType(facesContext).getName());   
  43.   
  44. 3.6.2  获取和设置ValueBinding对象的属性   
  45. 要获取由ValueBinding对象表示的属性值,可使用getValue方法。此方法具有如下签名:   
  46.   
  47. public abstract Object getValue(FacesContext facesContext)    
  48.   
  49. throws javax.faces.el.PropertyNotFoundException   
  50.   
  51. 比如,下面的代码提取由一个ValueBinding表示的ShoppingCartBean对象:   
  52.   
  53. FacesContext facesContext = FacesContext.getCurrentInstance();   
  54.   
  55. ApplicationFactory factory = (ApplicationFactory)   
  56.   
  57. FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);   
  58.   
  59. Application application = factory.getApplication();   
  60.   
  61. ValueBinding valueBinding =   
  62.   
  63. application.getValueBinding("shoppingCartBean");   
  64.   
  65. ShoppingCartBean bean =   
  66.   
  67. (ShoppingCartBean) valueBinding.getValue(facesContext);   
  68.   
  69. setValue方法则是用来改变由ValueBinding对象表示的属性值。其方法签名如下:   
  70.   
  71. public abstract void setValue   
  72.   
  73. (FacesContext facesContext, Object value)   
  74.   
  75. throws javax.faces.el.PropertyNotFoundException   
  76.   
  77. 比如,假设ShoppingCartBean有一个叫作purchaseId的属性,其声明如下:   
  78.   
  79. private String purchaseId;   
  80.   
  81. public String getPurchaseId() {   
  82.   
  83. return purchaseId;   
  84.   
  85. }   
  86.   
  87. public void setPurchaseId(String purchaseId) {   
  88.   
  89. this.purchaseId = purchaseId;   
  90.   
  91. }   
  92.   
  93. 则下面的代码可获取ShoppingCartBean对象的purchaseId属性,并将其值设为12345。   
  94.   
  95. FacesContext facesContext = FacesContext.getCurrentInstance();   
  96.   
  97. ApplicationFactory factory = (ApplicationFactory)   
  98.   
  99. FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);   
  100.   
  101. Application application = factory.getApplication();   
  102.   
  103. ValueBinding valueBinding =   
  104.   
  105. application.getValueBinding("ShoppingCartBean.purchaseId");   
  106.   
  107. valueBinding.setValue(facesContext, "12345");   
  108.   
  109. // print the current value   
  110.   
  111. System.out.println("Purchase Id:" +   
  112.   
  113. valueBinding.getValue(facesContext));   
  114.   
  115. 这段代码会在控制台输出如下文本:   
  116.   
  117. Purchase Id: 12345  
  118.   
  119. 3.6.3  检查ValueBinding属性是否可写   
  120. isReadOnly方法返回一个指示当前ValueBinding对象所表示的属性是否可写的boolean值。其方法签名如下:   
  121.   
  122. public abstract boolean isReadOnly(FacesContext facesContext)   
  123.   
  124. throws javax.faces.el.PropertyNotFoundException   
  125.   
  126. 比如,下面的代码在改变ShoppingCartBean的purchaseId属性前先检查其是否可写。   
  127.   
  128. FacesContext facesContext = FacesContext.getCurrentInstance();   
  129.   
  130. ApplicationFactory factory = (ApplicationFactory)   
  131.   
  132. FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);   
  133.   
  134. Application application = factory.getApplication();   
  135.   
  136. ValueBinding valueBinding =   
  137.   
  138. application.getValueBinding("shoppingCartBean.purchaseId");   
  139.   
  140. if (!valueBinding.isReadOnly(facesContext))   
  141.   
  142. valueBinding.setValue(facesContext, "12345");
分享到:
评论

相关推荐

    JSF1.1入门教程

    本教程将帮助你快速入门JSF 1.1,讲解其基本概念和使用方法。JSF通过提供一系列预定义的标准控件,使得开发者可以专注于业务逻辑,而不是处理底层HTML和HTTP细节。这些控件包括输入字段、按钮、下拉菜单等,它们与...

    JSF1.1,1.2,2.0API大集合

    这些API文档包含了JSF各个版本的详细接口、类和方法说明,对于开发者来说,无论是学习基础概念还是解决实际问题,都是不可或缺的参考资料。通过深入阅读和理解这些文档,你可以更好地掌握JSF的使用技巧,提升Web应用...

    jsf1.1基础环境平台

    在JSF 1.1中,这些组件通过`javax.faces.component.UIComponent`类及其子类表示。每个组件都可以有自己的属性和事件处理器,通过JSF的事件模型进行交互。 **三、JSF事件处理** JSF 1.1的事件处理基于一个发布/订阅...

    JSF1.1lib

    在给定的“JSF1.1lib”压缩包中,我们关注的是与解决特定问题相关的库文件。描述中提到的问题是,使用MyEclipse 6.0 GA(Great Advantage)版本创建的工程在启动时遇到了问题,这可能是由于集成环境中默认提供的JSF...

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part1

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part1

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part3

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part3

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part2

    Infragistics NetAdvantage for JSF 1.1 2008 Vol 2.part2

    jsf 1.1 taglib

    Java ServerPages 1.1 taglib 标签使用文档

    jsf-1-1:第一个jsf

    JSF 1.1是该框架的一个早期版本,它提供了一种组件化的方式来创建交互式的Web界面,同时简化了前后端开发的复杂性。在这个教程中,我们将深入探讨JSF 1.1的基础知识。 **一、JSF架构** JSF的核心概念是组件模型,它...

    JSF中配置dwr

    1. **添加依赖**:在`pom.xml`(如果你使用的是Maven项目)或类路径中,你需要引入DWR及相关库。这些库包括`dwr.jar`以及其依赖项,如`commons-collections-3.0.jar`, `json-lib-2.3-jdk13.jar` 和 `ezmorph-1.0.6....

    tomahawk-1.1.8-bin.zip

    Tomahawk的组件设计为与JSF 1.1无缝集成,允许开发者直接在JSF页面中使用,通过声明式方式配置和使用组件,极大地提高了开发效率。 为了在项目中使用Tomahawk,首先需要将解压后的文件引入到Web应用的类路径中。...

    JSF(java server faces)开源框架的源代码

    5. **EL(Expression Language)**:JSF使用统一的表达式语言,与JSP EL兼容,用于访问JavaBean属性和执行简单的运算。 6. **FacesContext**:它是JSF框架的主要上下文对象,包含了与当前请求相关的所有信息。 7. ...

    jsf-1.1资料大全.chm

    jsf开发必备!强烈推荐jsf开发的同学。 免费下载!不要钱。鄙视下载要钱的同学!

    JSF如何使用ExternalContext类

    本文将详细讲解如何在JSF中使用`ExternalContext`类。 首先,`ExternalContext`类主要提供了以下三种方法来获取Servlet环境中的核心对象: 1. **获取ServletContext对象**: - `getContext()`方法返回与当前请求...

    jsf中文使用教程jsf中文使用教程

    5. **国际化支持**:JSF支持多语言,这在“JSF中文使用教程”中可能包含如何设置和使用中文资源的内容。 **学习JSF的关键概念**: 1. **Facelet**:Facelets是JSF的默认视图技术,用于创建和组织用户界面组件。 2. ...

    详细的JSF的使用步骤

    - 使用JSF通常需要将相应的库文件(JARs)添加到项目的类路径中,例如WEB-INF/lib目录。 - 配置文件如web.xml和faces-config.xml用来设置JSF的行为,定义Managed Beans和导航规则等。 7. **开发环境** - JSF可以...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    本资源包包含了JSF从入门到进阶的多个方面,包括基础教程、核心组件库(LIB)、Ajax4JSF的使用以及项目创建的指导,是学习JSF的宝贵资料。 1. **JSF入门教程**:JSF的基础知识讲解,涵盖了JSF的基本概念、架构和工作...

    JSF学习,JSF标签使用

    JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍

    jsf标签使用文档

    #### 一、JSF概述与标签使用 JavaServer Faces(简称JSF)是一种基于Java EE的标准技术,它主要用于构建企业级Web应用。JSF提供了丰富的功能,包括表单处理、验证、国际化等,并通过一套强大的组件模型支持网页组件...

Global site tag (gtag.js) - Google Analytics