快速业务通道

编写JSF自定义复合组件的技巧和窍门 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

编写JSF自定义复合组件的技巧和窍门(4)

时间:2011-11-02 IBM

从 表 1 可以看出,一个组件基类通常对应于多个渲染器类型(如果使用 HTML 作为标记语言,即对 应于多个 HTML 元素),因为组件基类只定义了通用的数据和行为。比如说,UICommand 有两个 HTML 子 类 HtmlCommandButton 和 HtmlCommandLink,分别对应于渲染器类型 javax.faces.Link 和 javax.faces.Button .当我们想在一个复合组件内部包含一个链接时,只需要创建一个 UICommand 实例 ,并将其渲染器类型设置为 javax.faces.Link,而不用从头覆盖实现 encodeBegin() 和 decode() 方法。清单 2 列出了 Value Scroller 中的子组件如何在组件类 ValueScroller 中被创建,以及渲染器 等属性如何被设定。

清单 2. 重用标准渲染器创建自定义复合组件

 private static final String PANEL_GRID_RENDERER = "javax.faces.Grid"; 

private static final String INPUT_TEXT_RENDERER = "javax.faces.Text"; 

private static final String COMMAND_LINK_RENDERER = "javax.faces.Link"; 

private static final String GRAPHIC_IMAGE_RENDERER = "javax.faces.Image";

/** 

* Add children to the base container 

* 

*/ 

private void addChildrenAndFaces() { 

// Set attributes of the base container 

this.setRendererType(PANEL_GRID_RENDERER); 

this.getAttributes().put(COLUMNS_ATTRIBUTE, new Integer(2)); 

// Add the input component 

input = new UIInput(); 

input.setId(INPUT_ID); 

input.setRendererType(INPUT_TEXT_RENDERER); 

this.getChildren().add(input); 

// Add the container of the up and down links 

UIPanel linkContainer = new UIPanel(); 

linkContainer.setId(LINKPANEL_ID); 

linkContainer.setRendererType(PANEL_GRID_RENDERER); 

linkContainer.getAttributes().put(COLUMNS_ATTRIBUTE, new Integer(1)); 

ScrollerActionListener listener = new ScrollerActionListener(); 

// Add the up link 

UICommand upLink = new UICommand(); 

upLink.setId(UPLINK_ID); 

upLink.setRendererType(COMMAND_LINK_RENDERER); 

upLink.addActionListener(listener); 

UIGraphic upImage = new UIGraphic(); 

upImage.setId(UPIMAGE_ID); 

upImage.setRendererType(GRAPHIC_IMAGE_RENDERER); 

upImage.setUrl(UPIMAGE_URL); 

upLink.getChildren().add(upImage); 

linkContainer.getChildren().add(upLink); 

// Add the down link 

UICommand downLink = new UICommand(); 

downLink.setId(DOWNLINK_ID); 

downLink.setRendererType(COMMAND_LINK_RENDERER); 

downLink.addActionListener(listener); 

UIGraphic downImage = new UIGraphic(); 

downImage.setId(DOWNIMAGE_ID); 

downImage.setRendererType(GRAPHIC_IMAGE_RENDERER); 

downImage.setUrl(DOWNIMAGE_URL); 

downLink.getChildren().add(downImage); 

linkContainer.getChildren().add(downLink); 

this.getChildren().add(linkContainer); 

}

编写JSF自定义复合组件的技巧和窍门(5)

时间:2011-11-02 IBM

将属性值传递给标准组件

我们先看一下标签描述文件(TLD)中定义的 Value Scroller 提供的属性。

清单 3. 在 TLD 中定义自定义复合组件的属性

 <tag> 

  <name>valueScroller</name> 

  <tag-class>component.taglib.ValueScrollerTag</tag-class> 

  <body-content>JSP</body-content> 

  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号