The following example is taken from Chapter 2 of "Advanced Java Server 
Pages"
by David M. Geary

I'm getting this error when I try to implement to code sample below:

--
500 Internal Server Error:
Error parsing JSP page /test1.jsp line 13
Bean 'item' already defined
--


Has anyone any ideas what might be the problem?


***************
"test.jsp" code:
***************

<html><head><title>An Iterator</title></head>
<%@ taglib uri='/WEB-INF/tlds/iterator.tld' prefix='it' %>
<body>

<% java.util.Vector vector = new java.util.Vector();
        vector.addElement("one");   vector.addElement("two");
        vector.addElement("three"); vector.addElement("four");
%>

Iterating over <%= vector %> ...<p>

<it:iterate id='item' collection='<%= vector %>'>
   <jsp:useBean id='item' scope='page' class='java.lang.String'/>
   Item: <%= item %><br>
</it:iterate>

</p>
</body>
</html>


************************
Iterator.tld
************************
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 
1.1//EN" "web-jsptaglib_1_1.dtd">
<taglib>
        <tlibversion>1.0</tlibversion>
        <jspversion>1.1</jspversion>
        <shortname>smp</shortname>
        <info>Sun Microsystems Press Tag Library</info>
        <tag>
                <name>iterate</name>
                <tagclass>tags.IteratorTag</tagclass>
                <teiclass>tags.IteratorTagInfo</teiclass>
                <bodycontent>JSP</bodycontent>
                <attribute>
                        <name>id</name>
                        <required>true</required>
                        <rtexprvalue>true</rtexprvalue>
                </attribute>
                <attribute>
                        <name>collection</name>
                        <required>true</required>
                        <rtexprvalue>true</rtexprvalue>
                </attribute>
                <info>Iterates over a collection</info>
        </tag>
</taglib>

***************
IteratorTag.java
***************

import java.util.Collection;
import java.util.Iterator;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class IteratorTag extends BodyTagSupport {
   private Collection collection;
   private Iterator iterator;

   public void setCollection(Collection collection) {
      this.collection = collection;
   }
   public int doStartTag() throws JspException {
      return collection.size() > 0 ? EVAL_BODY_TAG : SKIP_BODY;
   }
   public void doInitBody() throws JspException {
      iterator = collection.iterator();
      pageContext.setAttribute(getId(), iterator.next());
   }
   public int doAfterBody() throws JspException {
      if(iterator.hasNext()) {
         pageContext.setAttribute(getId(), iterator.next());
         return EVAL_BODY_TAG;
      }
      else {
         try {
            getBodyContent().writeOut(getPreviousOut());
         }
         catch(java.io.IOException e) {
            throw new JspException(e.getMessage());
         }
         return SKIP_BODY;
      }
   }
}



*********************
IteratorTagInfo.java
*********************

package tags;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class IteratorTagInfo extends TagExtraInfo {
   public VariableInfo[] getVariableInfo(TagData data) {
      return new VariableInfo[] {
         new VariableInfo(data.getId(), // scripting var's name
               "java.lang.Object", // variable's type
               true, // whether variable is created
               VariableInfo.NESTED) // scope
      };
   }
}








_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


Reply via email to