JSF创建自定义组件.docVIP

  • 4
  • 0
  • 约1.5万字
  • 约 20页
  • 2020-05-17 发布于湖北
  • 举报
在我们开始之前,首先下载Step0.zip,它是一个初始的工程,包含了JSF运行所需要的包。当程序运行时将显示bannerpage.jsp页面,我们将通过这个页面逐步展示自定义组件的创建过程,并达到最终的运行效果。效果图如下: 第一节、? 自定义组件组成 首先我们将创建在页面上显示“Hello JSF Component”文字的简单组件,通过这个实例我们需要认识到自定义组件由那几部分组成。 一、页面显示代码 ???????? 在HTML页面表述: Hello JSF Component ???????? 在JSF页面表述: Hello JSF Component 二、开始创建自定义组件 1、? 第一步:实现标签库描述库 在WEB-INF下创建ticker.tld文件,内容如下: /dtd/web-jsptaglibrary_1_2.dtd 1.0 1.2 d / ticker ticker.TickerTag JSP 2、? 第二步:创建标签属性处理类 新建ticker包并在其下创建TickerTag.java package ticker; import ponent.UIComponent; import javax.faces.webapp.UIComponentTag; public class TickerTag extends UIComponentTag{ public void release( {// the super class method should be called super.release(; } protected void setProperties(UIComponent component {// the super class method should be called super.setProperties(component; } public String getComponentType( {return ticker;} public String getRendererType( { // null means the component renders itself return null; } } 注意: ???????? 通常我们的属性处理类命名为:标签名+Tag。 ???????? TickerTag需要继承UIConponentTag。 ???????? getComponentType(方法返回组件类型名称,类型在faces-configz.xml中配置,稍后我们将看到。 ???????? getRendererType(方法返回组件所需的呈现器类型。如果返回为空,那么组件将自我呈现。 ???????? release(方法将在标签销毁时释放它所占用的资源。 ???????? setProperties(方法是必须的,它将标签属性值绑定到组件中。 第三步:创建组件类 打开WEB-INF/faces-config.xml并且在其中写入配置信息 /dtd/web-facesconfig_1_0.dtd ticker ticker.UITicker 创建ticker.UITicker类,组件类主要用来维护状态、呈现用户接口和处理输入。 package ticker; import java.io.IOException;import ponent.UIOutput; import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter; public class UITicker extends UIOutput { public void encodeBegin(FacesContext context throws IOException { ResponseWriter writer = context.getResponseWriter(; writer.startElement(div, this; } public void encodeEnd(FacesContext context throws IOException { ResponseWriter writer = context.getResponseWriter(; writer.endElement(div; } } 注意: 组件类必须以UI+组件类型名命名 ???????? 因为自定义组件没有输入,所以我们继承UIOutput类 ???????? encodeBegin(FacesContext context方法开始标签 ???????? encodeEnd(Fac

文档评论(0)

1亿VIP精品文档

相关文档