goodluck 发表于 2010-2-20 15:08:57

使用JSP的自定义标签开发(迭代标签)

<p >标签的TLD<p ><p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;&lt;!DOCTYPE taglibPUBLIC &quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN&quot;&quot;http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd&quot;&gt;&lt;taglib&gt;&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;&lt;short-name&gt;book&lt;/short-name&gt;&lt;uri&gt;http://jstlbook.com/tld/weekday.tld&lt;/uri&gt;&lt;tag&gt;&lt;name&gt;if&lt;/name&gt;&lt;tag-class&gt;ttt.ConditionTest&lt;/tag-class&gt;&lt;attribute&gt;    &lt;name&gt;items&lt;/name&gt;   &lt;/attribute&gt;   &lt;attribute&gt;   &lt;name&gt;var&lt;/name&gt;   &lt;/attribute&gt;   &lt;attribute&gt;   &lt;name&gt;varStatus&lt;/name&gt;    &lt;/attribute&gt;&lt;/tag&gt;&lt;/taglib&gt;</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p ><p >标签类:<p ><p >几个地方需要说明<p ><p >items属性是jsp页面传来的需要迭代的collection<p ><p >hasNext方法返回collection是否迭代结束<p ><p >next 进行迭代<p ><p >divpare 可以看成是初始化<p ><p >setVarStatus方法可以监视循环状态,根c:forEach的类似<p ><p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>package ttt;import javax.servlet.jsp.JspTagException;import javax.servlet.jsp.jstl.core.LoopTagSupport;public class LoopTagTest extends LoopTagSupport ...{    private String items;    private int i=0;    public String getItems() ...{      return items;    }    public void setItems(String items) ...{      this.items = items;    }    protected boolean hasNext() throws JspTagException ...{      if(i==0)      ...{            return true;      }else...{            return false;      }    }    protected Object next() throws JspTagException ...{      i=1;      return this.getItems();    }    protected void divpare() throws JspTagException ...{      // TODO Auto-generated method stub            }    public void setVarStatus(String arg0) ...{      super.setVarStatus(arg0);    }}</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p ><p >JSP页面<p ><p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>&lt;%...@ taglib divfix=&quot;cc&quot; uri=&quot;http://jstlbook.com/tld/weekday.tld&quot; %&gt;&lt;%...@ taglib divfix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Currency Formatting&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;cc:if items=&quot;a:b:c:d&quot; var=&quot;line&quot; varStatus=&quot;s&quot;&gt;&lt;c:out value=&quot;${s.first}&quot;/&gt;&lt;br&gt;&lt;c:forTokens items=&quot;${line}&quot; delims=&quot;:&quot; var=&quot;field&quot;&gt;      &lt;c:out value=&quot;${field}&quot;/&gt;&lt;br&gt;&lt;/c:forTokens&gt;&lt;/cc:if&gt;&lt;/body&gt;&lt;/html&gt;</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p ><p >结果很容易,因为只有一个String,所以外层循环只循环一次,内层根据delims循环四次<p ><p >true <p >a <p >b <p >c <p >d<p >(责任编辑:董建伟)                               <p align="center"></p></p>
页: [1]
查看完整版本: 使用JSP的自定义标签开发(迭代标签)