jsf 创建自定义组件

原创 2007年09月12日 17:56:00
写个自定义按纽的组件,给大家可以参考一下:
 第一步:
package cn.jsf.fgliu

import javax.faces.component.UIComponent;
import javax.faces.webapp.UIComponentTag;

public class NewButtonTag extends UIComponentTag {
    
    private String name;
    private String style;
    private String value;
    
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

    public String getComponentType() {
        // TODO 自动生成方法存根
        return "NewButton";
    }

    public String getRendererType() {
        // TODO 自动生成方法存根
        return null;
    }
    protected void setProperties(UIComponent component){
        super.setProperties(component);
        NewButton button = (NewButton) component;
        if (name != null) {
            button.setName(name);
        }
        if(style!=null){
            button.setStyle(style);
        }
        if(value!=null)
            button.setMyValue(value);
        
    }

}

第二步:
package cn.jsf.fgliu

import 编程.io.IOException;

import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

public class NewButton extends UIOutput {
   
    private String name;
    private String style;
    private String myValue;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

    protected String getComponentType() {
        return "NewButton";
    }
   
    public void encodeEnd(FacesContext context) throws IOException {
        ResponseWriter writer = context.getResponseWriter();
        writer.write("<input type='button' name='"+ this.getName()+"' value = '"+ this.getMyValue()+"' style='"+this.getStyle()+"'>");
    }

    public String getMyValue() {
        return myValue;
    }

    public void setMyValue(String myValue) {
        this.myValue = myValue;
    }

}


第三步:
在WEB-INF/face-config.xml文件中加入该组件
 <component>
    <component-type>NewButton</component-type>
    <component-class>cn.jsf.fgliu.NewButton</component-class>
  </component>
第四步:
写tld文件
<taglib>
 <tag>
      <name>newButton</name>
      <tag-class>cn.jsf.fgliu.NewButtonTag</tag-class>
      <body-content>JSP</body-content>
      <description>my first button</description>
      <attribute>
         <name>id</name>
         <required>false</required>
         <rtexprvalue>false</rtexprvalue>
      </attribute>
      <attribute>
          <name>name</name>
          <required>false</required>
          <rtexprvalue>false</rtexprvalue>
      </attribute>
      <attribute>
          <name>style</name>
          <required>false</required>
          <rtexprvalue>false</rtexprvalue>
      </attribute>
      <attribute>
          <name>value</name>
          <required>false</required>
          <rtexprvalue>false</rtexprvalue>
      </attribute>
   </tag>
</taglib>

第五步:

在web.xml中加入
<taglib>
      <taglib-uri>http://www.cn.jsf.fgliu/button</taglib-uri>
      <taglib-location>/WEB-INF/button-tag.tld</taglib-location>
  </taglib>

第六步:
jsp页面中使用:
<%@ taglib uri="http://www.cn.jsf.fgliu/button" prefix="fgliu"%>

<fgliu:newButton  name="OK" value="ok"
        style="position:absolute;top:100px;left:61px;height:21px;width:80px;" />
这样就可以了,更多的内容请大家再多多交流。

相关文章推荐

JSF自定义文件上传组件

  • 2008年09月18日 22:02
  • 1.84MB
  • 下载

《JSF自定义组件》

  • 2007年12月07日 09:41
  • 202KB
  • 下载

JSF2自定义组件编程系列 第五部分

 在写这一章的时候,没有想到遇到很多的困难。现在简单的说一下: 1.添加taglib.xml文件里面的namespace看上去很美,但是带来了很大的困扰—EL表达式失效。这是我和另一位程序员在jav...

JSF2.0实战 - 4、自定义组件

  • 2014年05月03日 14:59
  • 8KB
  • 下载

JSF自定义组件中ResponseWriter.writeAttribute方法说明

最近学习JSF遇到很多奇怪的问题,就比如说ResponseWriter类里面的writeAttribute方法,Java EE 6 官方文档都没有具体的说明。API对这个方法的描述是: public...

JSF中为dataTable组件指定自定义行样式

HtmlDataTable组件属于UIData家族的HTML数据列表实现,组件中提供了rowStyleClass等方法来控制行的显示,,如果你在rowStyleClass中加入两个样式类,并使用逗号分...
  • hurryin
  • hurryin
  • 2011年08月16日 20:43
  • 953

RichFaces JSF自定义分页组件(简洁版)

使用原有的组件分页,所有的数据都要从数据库取出来,当大量数据的时候比较消耗资源,下边例子实现了从数据库的分页,采用RichFaces4实现,改到其他的版本只要修改显示的部分即可。 Abstr...
  • eilent
  • eilent
  • 2012年03月08日 22:52
  • 1434

JSF2自定义组件编程系列 第八部分

JSF 自定义复合组件 国际化 Ajax

JSF2自定义组件编程系列 第七部分

JSF Customized Composite Component,校验,日志以及debug信息
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsf 创建自定义组件
举报原因:
原因补充:

(最多只允许输入30个字)