ButtonTag继承自BaseHandlerTag,并添加了property,text,value等属性.源码如下(jakarta-struts-1.0.2):
通过源码,我们可以看出,jsp页面上的<html:button />实际上就是通过ButtonTag类输出一串"<input type="button" ...>"的html代码,这样就大大简化了前台html标记。由此,我们可以在jsp页面中只用一个标记来表示后台通过复杂的业务逻辑后生成的html代码。
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;
}
}
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;
}
}