Hello everybody.
I've just signed up this list, then I must present myselft first.
My name is Paco. I'm a J2EE developer for a local SW copany at Balearic
Islands (Spain - Europe).
I apologize me for my english. I write as well as I can :-)
I've read the etiquette and I've read the FAQ and I've read the mail
archieve, without having found an explanation to my problem.
Here it goes:
I've developed a small "iterate" TagLib. This Tag Lib works fine with WL and
Oracle iAS and I'm currently migrating to jboss + tomcat.
At the end of this e-mail I'will paste some code to explain properly why I
think there's a bug.
I've created a very simple JSP that tests my "IterateTag" and I get a
"NullPointerException" because of the EVAL_BODY_INCLUDE returned by
doStartTag.
I've been looking ".java" generated file from ".jsp" and I can see this
piece of code:
int _jspx_eval_bit_iterate_0 = _jspx_th_bit_iterate_0.doStartTag();
if (_jspx_eval_bit_iterate_0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
String str = null;
if (_jspx_eval_bit_iterate_0 !=
javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
javax.servlet.jsp.tagext.BodyContent _bc = pageContext.pushBody();
_bc.clear();
out = _bc;
_jspx_th_bit_iterate_0.setBodyContent(_bc);
_jspx_th_bit_iterate_0.doInitBody();
str = (String) pageContext.findAttribute("str");
}
do {
...
if (evalDoAfterBody !=
javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
break;
} while (true);
if (_jspx_eval_bit_iterate_0 !=
javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE)
out = pageContext.popBody();
}
I can't undestand why this generated ".java" file executes "if !=
EVAL_BODY_INCLUDE" and I think it should be "if == EVAL_BODY_INCLUDE" (May
be I'm wrong).
I've read the following at J2EE 1.3 javadoc about BodyTagSupport class
(http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/jsp/tagext/Tag.
html#EVAL_BODY_INCLUDE):
EVAL_BODY_INCLUDE
public static final int EVAL_BODY_INCLUDE
Evaluate body into existing out stream. Valid return value for doStartTag
I can workarround this by returning EVAL_BODY_BUFFERED (so this isn't a
critical error)
Could anybody explain why is _jspx_eval_bit_iterate_0 being compared to be
not EVAL_BODY_INCLUDE?
Tell me if you need something else.
Thanks in advance for your help.
Some source code for "ItareateTag.java"
---
public int doStartTag() throws JspTagException
{
if(iterator==null) return SKIP_BODY;
if(iterator.hasNext())
{
pageContext.setAttribute(name,iterator.next(),PageContext.PAGE_SCOPE);
Enumeration en =
pageContext.getAttributeNamesInScope(PageContext.PAGE_SCOPE);
while (en.hasMoreElements()) System.out.println("Attributute: " +
en.nextElement());
return EVAL_BODY_INCLUDE;
}
else return SKIP_BODY;
}
public int doAfterBody() throws JspTagException
{
System.out.println("IterateTag.doAfterBody. name: " + name + "
Iteratior: " + iterator + "Type: " + type);
if(iterator.hasNext())
{
pageContext.setAttribute(name,iterator.next(),PageContext.PAGE_SCOPE);
return EVAL_BODY_AGAIN;
}
else
{
return SKIP_BODY;
}
}
public int doEndTag() throws JspTagException
{
System.out.println("IterateTag.doEndTag. name: " + name + " Iteratior: "
+ iterator + "Type: " + type);
try
{
if(bodyContent != null)
bodyContent.writeOut(bodyContent.getEnclosingWriter());
}
catch(java.io.IOException e)
{
throw new JspTagException("IO Error: " + e.getMessage());
}
System.out.println("Fin IterateTag.doEndTag. ");
return EVAL_PAGE;
}
---
Some source code for a JSP test file:
---
<%@ page contentType="text/html;charset=ISO-8859-15"%>
<%@ page import="java.util.*" %>
<%@ taglib uri="mytags" prefix="bit" %>
<%
Vector v = new Vector();
v.addElement("First Element");
v.addElement("Second Element");
v.addElement("Third Element");
v.addElement("Fourth Element");
%>
<html>
<head></head>
<body>
<table>
<bit:iterate name="str" collection="<%=v%>" type="String">
<tr><td>This items contains <%=str.length()%> characters and its
value is <%=str%></td></tr>
</bit:iterate>
</table>
</body>
---
taglib.tld contents:
---
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library
1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>test</shortname>
<uri></uri>
<info>Iterate Tag Lib.</info>
<tag>
<name>iterate</name>
<tagclass>es.caib.dembs.tags.IterateTag</tagclass>
<teiclass>es.caib.dembs.tags.IterateTEI</teiclass>
<bodycontent>JSP</bodycontent>
<info>a simple iterator</info>
<attribute>
<name>collection</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
<attribute>
<name>type</name>
<required>true</required>
</attribute>
</tag>
</taglib>
---
___________________________________________________
Yahoo! M�viles
Personaliza tu m�vil con tu logo y melod�a favorito
en http://moviles.yahoo.es
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]