`
tendy
  • 浏览: 47711 次
  • 来自: ...
社区版块
存档分类
最新评论

把ExtJS的组件包装成 JSF 组件(3)

    博客分类:
  • java
阅读更多
(续)为 ExtInputDate 写个 JSP tag。
没什么特别内容,基本上是 setter:
java 代码
  1. public class ExtInputDateTag extends UIComponentELTag {   
  2.   
  3.     private ValueExpression format;   
  4.        
  5.     private ValueExpression width;   
  6.        
  7.     private ValueExpression readonly;   
  8.        
  9.     private ValueExpression disabled;   
  10.        
  11.     private ValueExpression value;   
  12.        
  13.     private ValueExpression styleClass;   
  14.        
  15.     private ValueExpression required;   
  16.        
  17.     @Override  
  18.     public String getComponentType() {   
  19.         return ExtInputDate.COMPONENT_TYPE;   
  20.     }   
  21.   
  22.     @Override  
  23.     public String getRendererType() {   
  24.         return ExtInputDateRenderer.RENDERER_TYPE;   
  25.     }   
  26.   
  27.     public void setFormat(ValueExpression format) {   
  28.         this.format = format;   
  29.     }   
  30.   
  31.     public void setWidth(ValueExpression width) {   
  32.         this.width = width;   
  33.     }   
  34.   
  35.     public void setReadonly(ValueExpression readonly) {   
  36.         this.readonly = readonly;   
  37.     }   
  38.   
  39.     public void setDisabled(ValueExpression disabled) {   
  40.         this.disabled = disabled;   
  41.     }   
  42.   
  43.     public void setValue(ValueExpression value) {   
  44.         this.value = value;   
  45.     }   
  46.   
  47.     public void setStyleClass(ValueExpression styleClass) {   
  48.         this.styleClass = styleClass;   
  49.     }   
  50.   
  51.     public void setRequired(ValueExpression required) {   
  52.         this.required = required;   
  53.     }   
  54.   
  55.     @Override  
  56.     protected void setProperties(UIComponent component) {   
  57.         super.setProperties(component);   
  58.            
  59.         if (null != format) {   
  60.             component.setValueExpression("format", format);   
  61.         }   
  62.            
  63.         if (null != width) {   
  64.             component.setValueExpression("width", width);   
  65.         }   
  66.   
  67.         if (null != readonly) {   
  68.             component.setValueExpression("readonly", readonly);   
  69.         }   
  70.   
  71.         if (null != disabled) {   
  72.             component.setValueExpression("disabled", disabled);   
  73.         }   
  74.   
  75.         if (null != value) {   
  76.             component.setValueExpression("value", value);   
  77.         }   
  78.            
  79.         if (null != styleClass) {   
  80.             component.setValueExpression("styleClass", styleClass);   
  81.         }   
  82.            
  83.         if (null != required) {   
  84.             component.setValueExpression("required", required);   
  85.         }   
  86.     }   
  87.   
  88.     @Override  
  89.     public void release() {   
  90.         super.release();   
  91.         format = null;   
  92.         width = null;   
  93.         readonly = null;   
  94.         disabled = null;   
  95.         value = null;   
  96.         styleClass = null;   
  97.         required = null;   
  98.     }   
  99. }   

JSF 1.2 跟 1.1 不同的是,使用了ValueExpression 代替了以前的 ValueBinding。
如果是 action 和 actionListener,使用 MethodExpression。

最后,就是配置了,既长且臭...
TLD文件配置:

xml 代码
  1. <tag>  
  2.     <name>inputDate</name>  
  3.     <tag-class>example.ExtInputDateTag</tag-class>  
  4.     <body-content>JSP</body-content>  
  5.     <attribute>  
  6.         <name>rendered</name>  
  7.         <required>false</required>  
  8.         <deferred-value>  
  9.             <type>java.lang.Boolean</type>  
  10.         </deferred-value>  
  11.     </attribute>  
  12.     <attribute>  
  13.         <name>binding</name>  
  14.         <required>false</required>  
  15.         <deferred-value>  
  16.             <type>javax.faces.component.UIComponent</type>  
  17.         </deferred-value>  
  18.     </attribute>  
  19.     <attribute>  
  20.         <name>id</name>  
  21.         <required>false</required>  
  22.         <rtexprvalue>false</rtexprvalue>  
  23.         <type>java.lang.String</type>  
  24.     </attribute>  
  25.     <attribute>  
  26.         <name>format</name>  
  27.         <required>false</required>  
  28.         <deferred-value>  
  29.             <type>java.lang.String</type>  
  30.         </deferred-value>  
  31.     </attribute>  
  32.     <attribute>  
  33.         <name>width</name>  
  34.         <required>false</required>  
  35.         <deferred-value>  
  36.             <type>java.lang.Integer</type>  
  37.         </deferred-value>  
  38.     </attribute>  
  39.     <attribute>  
  40.         <name>readonly</name>  
  41.         <required>false</required>  
  42.         <deferred-value>  
  43.             <type>java.lang.Boolean</type>  
  44.         </deferred-value>  
  45.     </attribute>  
  46.     <attribute>  
  47.         <name>required</name>  
  48.         <required>false</required>  
  49.         <deferred-value>  
  50.             <type>java.lang.Boolean</type>  
  51.         </deferred-value>  
  52.     </attribute>  
  53.     <attribute>  
  54.         <name>disabled</name>  
  55.         <required>false</required>  
  56.         <deferred-value>  
  57.             <type>java.lang.Boolean</type>  
  58.         </deferred-value>  
  59.     </attribute>  
  60.     <attribute>  
  61.         <description>  
  62.             Only support java.util.Date and java.lang.String.   
  63.         </description>  
  64.         <name>value</name>  
  65.         <required>false</required>  
  66.         <deferred-value>  
  67.             <type>java.lang.Object</type>  
  68.         </deferred-value>  
  69.     </attribute>  
  70.     <attribute>  
  71.         <name>styleClass</name>  
  72.         <required>false</required>  
  73.         <deferred-value>  
  74.             <type>java.lang.String</type>  
  75.         </deferred-value>  
  76.     </attribute>  
  77. </tag>  

JSF 1.2 跟 JSF 1.1 稍为不同的是,数据类型使用 <deferred-value><type> some type </type></deffered-value>。
taglib 的写法:

xml 代码
  1. <taglib  
  2.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">  
  5. <!--  content -->  
  6. </taglib>  

faces-config.xml,略. 这个跟 JSF 1.1 一样。

分享到:
评论

相关推荐

    Ext组件转化成JSF

    ExtJS组件包括其概念、创建方式、与服务器的交互方式以及如何组合组件。JSF技术原理涉及其生命周期、组件模型以及渲染器的概念。同时,了解HTTP和Ajax的基本知识,以及JDK 1.5及以上版本的新特性(如泛型、元数据和...

    第二波又来了:AOM3.2之8款皮肤分享(for extjs3.31)

    这些皮肤的实现主要通过CSS样式表和JavaScript代码来调整ExtJS组件的外观,使得开发者可以轻松地改变整个应用的视觉风格,而无需对核心功能进行修改。 在实际应用中,更换皮肤不仅能够改变应用程序的整体色调和风格...

    java extjs 仿163邮箱源码

    Java和ExtJS是两种在开发Web应用程序时...开发者需要熟悉Java服务器端编程,理解ExtJS组件的使用,并且可能需要对邮件协议和Office文档处理有一定的了解。通过这样的实践,开发者可以提升在Web应用开发中的综合能力。

    EXTJS+RICHFACES

    RichFaces作为内容部分,它的AJAX和JSF组件可以无缝集成到EXTJS界面中,以提供动态数据更新和复杂的用户界面元素。 RichFaces的核心特性包括: 1. **AJAX支持**:RichFaces提供了一系列的AJAX-enabled组件,允许...

    MyEclipse 8.5 + Spket 1.6.18 + ExtJS ext-4.0.0

    3. **配置Spket与ExtJS**:在MyEclipse中,通过Window → Preferences → Spket → JavaScript Profiles进行设置,创建一个新的配置文件(如命名为ExtJS),并添加ExtJS库(通过AddLibrary和AddFile选项)。...

    java-Struts-Hibernatelib.zip_extjs4

    【标题】"java-Struts-Hibernate-lib.zip_extjs4" 涉及的是一个Java Web开发中的集成框架,其中包括了Struts、Hibernate和Spring这三个核心组件,以及ExtJS4前端框架,配合Jbpm4流程引擎和Oracle10g数据库的实践项目...

    liliya

    1. **前言**:阐述了Lilya平台的目标和定位,即在不替换原有ExtJs API的前提下,通过使用ExtJs、WZGrapher等组件简化JSF等技术的开发流程。 2. **Lilya介绍**:针对初次接触Lilya的用户提供入门级教程,旨在快速...

    JavaEExt:使用Java EE和ExtJS进行快速应用程序开发-开源

    在Java EE平台上,JavaEExt利用了诸如Servlet、JSP、JavaServer Faces (JSF) 和Enterprise JavaBeans (EJB) 等核心组件。Servlet负责处理HTTP请求,JSP用于生成动态内容,而JSF则提供了模型-视图-控制器(MVC)架构...

    spket1-1.6.23

    3. **增强的代码补全**:Spket1-1.6.23的代码补全功能不仅限于ExtJS,还覆盖了其他常见的JavaScript库和框架,如jQuery、Dojo等,确保开发者在编写JavaScript代码时得到全面的支持。 4. **错误检查和调试**:此版本...

    J2EE程序员需掌握的技术

    - JSF(Facelets,Richfaces,Ajax4jsf,ICEFaces):提供组件化开发,易于构建用户界面。 - Struts2:基于MVC的框架,整合了许多其他技术如OGNL和拦截器。 - Spring MVC:Spring框架的一部分,提供了强大的MVC...

    javascript,css,dhtml,ext3.0,java web,api文档大全中文chm

    `Ext 3.0 中文API.CHM`将帮助开发者了解EXTJS的组件系统、数据绑定、事件处理等高级特性。 **Java Web**:Java Web是指使用Java技术栈开发的Web应用程序,包括Servlet、JSP、JavaServer Faces (JSF) 等。`java web ...

    基于J2EE的客户关系管理系统的设计与实现

    通过深入研究J2EE技术及其相关组件,如AJAX、ExtJS、Struts和Hibernate等,可以更好地满足企业在客户关系管理方面的需求。未来,随着新技术的不断发展,客户关系管理系统的功能和服务也将更加完善。

    java学习线路

    * JSF&lt;选学&gt;:MVC 与 JSF 设计理念、托管 Bean 与导航模型、JSF 流程与事件机制、JSF 标签库、类型转换与输入检验 * EJB 及相关技术:JNPI 与 RMI、会话 Bean 及其生命周期、IoC 与 EJB拦截器、JMS 与 MDB、会话 ...

    SOA通用架构.docx

    17. **Web前端**:HTML、JavaScript、JSP、JSF、Velocity、EasyUI、ExtJS、jQuery、Struts、SpringMVC、SpringSide等技术构建用户界面,同时,Apache HTTP Server、HttpClient、Nginx等用于Web服务器和反向代理。...

    java面试宝典和学习必备

    Java 技术是现代软件开发领域中的核心组件,尤其在面试和学习过程中,掌握Java的相关知识点至关重要。以下是一些关键的Java技术要点: 1. **Java三大框架**:SSH(Struts2、Hibernate、Spring)是Java开发中最常见...

    demo工程列表说明1

    38. **JSF(JavaServer Faces)**:jsf22demo展示了JSF 2.2的应用,包括Facelet模板页面的使用。 39. **JavaScript库**:jslibdemo中包含了不同JavaScript库的示例,如ExtJS的表格控件,Dojo的EnhancedGrid和dgrid...

    java的各种技术.pdf

    JQuery和ExtJS是流行的JavaScript库,提供丰富的UI组件和简化DOM操作。 3. **JavaFX**:JavaFX是一种用于创建桌面和移动设备的现代图形用户界面的平台,使用声明式语法,支持静态类型编程。 4. **JSP/Servlet/...

Global site tag (gtag.js) - Google Analytics