struts taglib 源码之--ButtonTag

ButtonTag继承自BaseHandlerTag,并添加了property,text,value等属性.源码如下(jakarta-struts-1.0.2):
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  ButtonTag  extends  BaseHandlerTag
{

    
protected String property;
    
protected String text;
    
protected String value;

    
public ButtonTag()
    
{
        property 
= null;
        text 
= null;
        value 
= null;
    }


    
public String getProperty()
    
{
        
return property;
    }


    
public void setProperty(String property)
    
{
        
this.property = property;
    }


    
public String getValue()
    
{
        
return value;
    }


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


    
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
    
{
        String label 
= value;
        
if(label == null && text != null)
            label 
= text;
        
if(label == null || label.trim().length() < 1)
            label 
= "Click";
        StringBuffer results 
= new StringBuffer();
        results.append(
"<input type="button"");
        
if(property != null)
        
{
            results.append(
" name="");
            results.append(property);
            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(
" value="");
        results.append(label);
        results.append(
""");
        results.append(prepareEventHandlers());
        results.append(prepareStyles());
        results.append(
">");
        ResponseUtils.write(pageContext, results.toString());
        
return 6;
    }


    
public void release()
    
{
        
super.release();
        property 
= null;
        text 
= null;
        value 
= null;
    }

}
 通过源码,我们可以看出,jsp页面上的<html:button />实际上就是通过ButtonTag类输出一串"<input type="button" ...>"的html代码,这样就大大简化了前台html标记。由此,我们可以在jsp页面中只用一个标记来表示后台通过复杂的业务逻辑后生成的html代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值