定制自己的struts标签
来源:互联网 发布:数据库同义词 编辑:程序博客网 时间:2024/06/11 20:56
我们知道,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>
<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 = " ";
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;
}
}
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 = " ";
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>
<%...@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>
最后运行的效果
- 定制自己的struts标签
- 在Struts框架下定制自己的标签
- 定制自己的xDoclet标签
- 定制自己的xDoclet标签
- 定制自己的xDoclet标签
- 如何定制struts以适应自己的需求
- 定制自己的linux
- 定制自己的DataGridView
- 定制自己的Form
- 定制自己的infoTemplate
- 定制自己的launch
- 定制自己的eversecOS
- 定制自己的ACTION
- 定制自己的控件
- 定制自己的FancyBox
- 定制自己的VIM
- 定制自己的Request
- 定制自己的SolrRequestHandler
- linux下二级代理软件desproxy教程
- C/C++调用JVM -可执行Java文件方案
- Adobe应用服务器企业版
- 指纹识别的原理和方法
- 美食篇
- 定制自己的struts标签
- 书法篇
- [思语]_黄金规则――男人对待感情的若干策略
- 工艺篇
- 终于弄了个自己的角落,写点啥呢?
- 男生容易误解女生的几个行为
- 2007年8月3日的工作总结
- 为了公司的发展、员工有利益,老子每天吹牛!!!--咱们一起"骂"老板(3)
- [思语]_一花一世界,一树一菩提