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

本文介绍如何为ExtInputDate创建自定义JSP标签,并详细展示了其属性设置及TLD文件配置。重点讲解了JSF 1.2中ValueExpression的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(续)为 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 一样。

标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值