📄 taglib原理和实现之循环的tag - fanqiang_com.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://fanqiang.chinaunix.net/program/html/2005-04-21/3177.shtml -->
<HTML><HEAD><TITLE>Taglib原理和实现之循环的Tag - fanqiang.com</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
FONT: 12pt 宋体
}
TH {
FONT: 12pt 宋体
}
INPUT {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
TEXTAREA {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
checkbox {
FONT: 12pt 宋体
}
A:link {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:visited {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:hover {
COLOR: #ffff00; TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
TD {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
P {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2800.1505" name=GENERATOR></HEAD>
<BODY text=#ffffff bgColor=#000000 leftMargin=0
background="Taglib原理和实现之循环的Tag - fanqiang_com.files/bline.gif" topMargin=5
onload=setTailPosition() marginwidth="0" marginheight="5">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD height=45>
<P align=center><IMG alt="[ 永远的UNIX::UNIX技术资料的宝库 ]"
src="Taglib原理和实现之循环的Tag - fanqiang_com.files/title.gif"> </P></TD></TR>
<TR>
<TR>
<TD vAlign=bottom align=left height=40><SMALL><A
href="http://fanqiang.chinaunix.net/">首页</A> > 编程技术 > <A
href="http://fanqiang.chinaunix.net/program/html/index.shtml">HTML/JS/XML</A>
> 正文</SMALL></TD></TR>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG height=1
src="Taglib原理和实现之循环的Tag - fanqiang_com.files/c.gif"
width=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle><BR>
<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TH class=f24>
<H1>Taglib原理和实现之循环的Tag</H1></TH></TR>
<TR>
<TD align=middle height=20><FONT
color=#999999><SMALL>作者:WalkingWithJava Java研究组织 (2005-04-21
14:13:39)</SMALL></FONT></TD></TR>
<TR>
<TD><BR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0052768304011480";
google_alternate_color = "000000";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel ="5959447789";
google_color_border = "000000";
google_color_bg = "666666";
google_color_link = "FFFFFF";
google_color_url = "FF9900";
google_color_text = "CCCCCC";
//--></SCRIPT>
<SCRIPT src="Taglib原理和实现之循环的Tag - fanqiang_com.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR>
<TR>
<TD height=15></TD></TR>
<TR>
<TD class=l17><FONT class=f14 id=zoom><FONT color=#cccccc><!-- 正文begin --><!--StartFragment --> <SPAN
class=f14>1、问题:在request里的 People 对象,有个属性叫 men ,men 是一个Collection
,有许多个man 。现在,把
collection里的man的名字都显示出来。<BR><BR> 显然,这是一个嵌套Tag的问题。有三个Tag互相作用:最外层的Tag找到People对象,中间的Tag取得Collection,子Tag负责打印。<BR><BR> 例如:<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf
border=1>
<TBODY>
<TR>
<TD><diego:withObject
value="${people}"><BR> <diego:withCollection
property="men"><BR> <diego:elementout property="name"/>
<BR> </diego:withCollection><BR></diego:withObject></TD></TR></TBODY></TABLE><BR> 思路如下:<BR><BR> 1)
编写WithObjectTag,负责从El表达式中取得对象<BR><BR> 2)
编写WithCollectionTag,负责从对象中取得 Collection ,遍历 Collection ,每遍历一次
Collection ,执行一次body<BR><BR> 3) 编写ElementoutTag ,把 Collection
中每个men对象的 name 打印出来<BR><BR> 2.
完整程序如下:<BR><BR> 在上例的diegoyun.vo包内,编写 People 类<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf
border=1>
<TBODY>
<TR>
<TD>package diegoyun.vo;<BR>import
java.util.Collection;<BR>public class People<BR>{<BR> private
Collection men = null; <BR> public Collection
getMen()<BR> {<BR> return men;<BR> }<BR> public void
setMen(Collection men)<BR> {<BR> this.men =
men;<BR> }<BR>}</TD></TR></TBODY></TABLE><BR> 编写 withObject
,这是从request里取得People对象的最外层Tag<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf
border=1>
<TBODY>
<TR>
<TD>package diegoyun;<BR>import
javax.servlet.jsp.JspException;<BR>import
javax.servlet.jsp.tagext.BodyTagSupport;<BR>import
org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;<BR>public
class WithObjectTag extends BodyTagSupport<BR>{<BR> private
Object value = null;<BR><BR> public Object
getValue()<BR> {<BR> return value;<BR> }<BR> public void
setValue(Object value)throws
JspException<BR> {<BR> this.value =
ExpressionEvaluatorManager.evaluate("value", value.toString(),
Object.class, this, pageContext);<BR> }<BR> public int
doStartTag()<BR> { <BR> return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -