定制自己的struts标签

我们知道,struts的标签都定义在*.tld标签库文件中。这样,我们就可以建一个tld文件,定义自己的个性化标签。以下以html标签为例,创建一个含有table标签的tld文件

1.mytag.tld:

<? xml version="1.0" encoding="UTF-8" ?>
< taglib >
< tlibversion > 1.0 </ tlibversion >
< jspversion > 1.1 </ jspversion >
< tag >
< name > table </ name >
< tagclass > org.apache.struts.taglib.html.Table </ tagclass >
< attribute >
< name > id </ name >
< required > false </ required >
< rtexprvalue > true </ rtexprvalue >
</ attribute >
< attribute >
< name > row </ name >
< required > false </ required >
< rtexprvalue > true </ rtexprvalue >
</ attribute >
< attribute >
< name > col </ name >
< required > false </ required >
< rtexprvalue > true </ rtexprvalue >
</ attribute >
< attribute >
< name > tabindex </ name >
< required > false </ required >
< rtexprvalue > true </ rtexprvalue >
</ attribute >
< attribute >
< name > onclick </ name >
< required > false </ required >
< rtexprvalue > true </ rtexprvalue >
</ attribute >
</ tag >
</ taglib >

 编写标签处理类Table.java:

package  org.apache.struts.taglib.html;

import  javax.servlet.jsp.JspException;
import  javax.servlet.jsp.tagext. * ;
import  org.apache.struts.util.ResponseUtils;

//  Referenced classes of package org.apache.struts.taglib.html:
//             BaseHandlerTag

public   class  Table  extends  BaseHandlerTag
{

    
protected String id;
    
protected String text;
    
protected String row;
    
protected String col;

    
public Table()
    
{
        id 
= null;
        row 
= "1";
        col 
= "1";
    }


    
public String getId()
    
{
        
return id;
    }


    
public void setId(String id)
    
{
        
this.id = id;
    }


    
public String getRow()
    
{
        
return row;
    }


    
public void setRow(String r)
    
{
        
this.row = r;
    }

    
    
public String getCol()
    
{
        
return col;
    }


    
public void setCol(String c)
    
{
        
this.col = c;
    }
    

    
public int doStartTag()
        
throws JspException
    
{
        text 
= null;
        
return 2;
    }


    
public int doAfterBody()
        
throws JspException
    
{
        
if(bodyContent != null)
        
{
            String value 
= bodyContent.getString().trim();
            
if(value.length() > 0)
                text 
= value;
        }

        
return 0;
    }


    
public int doEndTag()
        
throws JspException
    
{
        StringBuffer results 
= new StringBuffer();
        results.append(
"<table border="1"");
        
if(id != null)
        
{
            results.append(
" id="");
            results.append(id);
            results.append(
""");
        }

        
if(accesskey != null)
        
{
            results.append(
" accesskey="");
            results.append(accesskey);
            results.append(
""");
        }

        
if(tabindex != null)
        
{
            results.append(
" tabindex="");
            results.append(tabindex);
            results.append(
""");
        }

        results.append(prepareEventHandlers());
        results.append(prepareStyles());
        results.append(
">");
        String[] rowdata 
= text.split("//n");
        String[] coldata 
= null;
        
            System.out.println(
" text: "+text+" rowdata.length="+rowdata.length);        
        
        
int r = new Integer(row).intValue();
        
int c = new Integer(col).intValue();
        String v 
= "";
        
        
for(int i=0;i<r;i++)
        
{
            results.append(
"<tr>");
            v 
= "";
            
if(i<rowdata.length && !rowdata[i].equals(""))v = rowdata[i];
            coldata 
= v.split("//t");
            
for(int j=0;j<c;j++)
            
{                
                results.append(
"<td>");
                v 
= "&nbsp;";
                
if(j<coldata.length && !coldata[j].equals(""))v = coldata[j];
                results.append(v);                
                results.append(
"</td>");
            }

            results.append(
"</tr>");
        }

        results.append(
"</table>");
        ResponseUtils.write(pageContext, results.toString());
        
return 6;
    }


    
public void release()
    
{
        
super.release();
        id 
= null;
        text 
= null;
        row 
= null;
        col 
= null;
    }

}

在index.jsp页面中引用自定义的table标签:
<% @page contentType="text/html;charset=UTF-8" language="java" %>
<% @taglib uri="/WEB-INF/mytag.tld" prefix="myhtml" %>
< html >
< head >< title > struts test </ title ></ head >
< body >
   this is a table tag:

< myhtml:table  id ="hh"  row ="3"  col ="3" > 11/n21/t22 </ myhtml:table >
</ body >
</ html >

最后运行的效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值