Tomcat 5.0.19 can run the following tag, but can't assgin or evaluate values
to/from EL variable. So, Tomcat output is:

${a1}
${a1}
${a1}

while expected output is:

a
b
c

Resin and JRun can do the expected behavior.

---tag handler------------------------------------------------------------
package mytag;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import javax.servlet.http.*;
import java.util.*;

public class foreach extends BodyTagSupport{
  private Iterator iterator;
  private String group;

  public void setGroup(String group){
    this.group = group;
  }

  public  String getGroup(){
    return group;
  }

  public int doStartTag() throws JspException{
    try{
      String[] intarray = new String[] {"a","b","c"};
      ArrayList ar = new ArrayList(Arrays.asList(intarray));
      iterator = ar.iterator();

      if (iterator.hasNext()){
        String o = (String)iterator.next();
        pageContext.setAttribute("a1", o);
        return EVAL_BODY_BUFFERED;
      }
      else{
       return SKIP_BODY;
      }
    }
    catch (Exception e){
      System.err.println(e);
    }
    return SKIP_BODY;
  }

  public int doAfterBody() throws JspException{
    try{
      if (iterator == null){
        return SKIP_BODY;
      }
      if (iterator.hasNext()) {
        String o = (String)iterator.next();
        pageContext.setAttribute("a1", o);
        return EVAL_BODY_AGAIN;
      }
      else{
        return SKIP_BODY;
      }
    }
    catch (Exception e){
      System.err.println(e);
    }
    return SKIP_BODY;
  }

  public int doEndTag() throws JspException {
    try {
      pageContext.getOut().print(bodyContent.getString());
    }
    catch(Exception ioe) {
      System.out.println(ioe);
    }
    return EVAL_PAGE;
  }
}

--test.jsp-----------------------------------------------------------
<%@ page contentType="text/html" %>
<%@ taglib prefix="jrun" uri="/WEB-INF/mytag.tld" %>
<html><body bgcolor="lightgreen">
<hr>
[Tag Test]<br>
<jrun:foreach group="itemsql">
${a1}<br>
</jrun:foreach>
<hr>
This is another test<br>
<jrun:foreach group="itemsql">
${a1}<br>
</jrun:foreach>
<hr>
This bad boy!<br>
<jrun:foreach group="itemsql">
${a1}<br>
</jrun:foreach>
<hr></body></html>

--TLD----------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
 PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd";>

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>

  <tag>
    <name>foreach</name>
    <tag-class>mytag.foreach</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <name>group</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>

</taglib>
-----------------------------------------------------------------

--
Hiroshi Iwatani

*stop cruelty* Annual number of institutionally euthanized cats and dogs
including kittens and puppies: US 5 million, JP 500 thousand. How about your
country? *for our better karma*
---------------------


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to