Ajuda (Criação de taglib)

Estou com um erro na crição de uma taglib e ficaria agradecido se alguem pudesse me dar uma ajuda.
Estou lendo um tutorial sobre taglib e fazendo um testes. Fui fazer um teste para criar uma tab lib de iteração chamada iterate para funcionar de forma similar a da iterate do struts. Escrevi a seguinte classe para a tag lib:

[code]
package tag;

import …

public class IterateTag implements BodyTag{

Tag parent;
PageContext pageContext;
BodyContent bodyContent;
Collection collection;
Iterator iterator;
String id;
String name;

public IterateTag( ){
}

public int doStartTag( ){
	collection = (Collection)pageContext.getRequest( ).getAttribute( name );
	if( collection == null ) return SKIP_BODY;
	return EVAL_BODY_INCLUDE;
}

public void doInitBody( ){
	Object object;
	iterator = collection.iterator( );
	if( iterator.hasNext( ) ){
		object = iterator.next( );
		pageContext.getRequest( ).setAttribute( id, object );
	}
}

public int doAfterBody( ){
	Object object;
	if( iterator.hasNext( ) ){
		object = iterator.next( );
		pageContext.getRequest( ).setAttribute( id, object );
		return EVAL_BODY_AGAIN;
	}
	else{
		return SKIP_BODY;
	}
}

public int doEndTag( ){
	return EVAL_PAGE;
}

public void release( ){
	/*Object obj = pageContext.getRequest( ).getAttribute( id );
	if( obj != null ){
		pageContext.getRequest( ).removeAttribute( id );
	}*/
}

public void setId( String id ){
	this.id = id;
}

public String getId( ){
	return id;
}

public void setName( String name ){
	this.name = name;
}

public String getName( ){
	return name;
}

public void setParent( Tag parent ){
	this.parent = parent;
}

public void setBodyContent( BodyContent bodyContent ){
	this.bodyContent = bodyContent;
}

public void setPageContext( PageContext pageContext ){
	this.pageContext = pageContext;
}

public Tag getParent( ){
	return parent;
}

}[/code]

Criei o arquivo tld:

~<?xml version="1.0" encoding="ISO-8859-1"?>

<taglib>

	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>hbo</shortname>
	<uri>mytag</uri>
	<info>My Tag</info>

	<tag>
		<name>iterate</name>
		<tagclass>tag.IterateTag</tagclass>
		<bodycontent>jsp</bodycontent>
		<info>Iteração para uma Collection</info>
		<attribute>
			<name>id</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
	</tag>
</taglib>

Mapeei no arquivo xml da aplicação o meu arquivo taglib normal com a uri “mytag”.

Aí criei uma página jsp para fazer um teste, que recebe uma collection de usuários (tipo User que criei) na request e exibe o conteúdo em uma tabela:

<%@page contentType="text/html; charset=ISO-8859-1"%>
<%@taglib uri="mytag" prefix="hbo"%>

<html>

	<head><title>TesteTagLib</title>
	</head>

	<body>
		<table>
			<hbo:iterate id="user" name="usuarios">
				<tr>
					<td><jsp:getProperty name="user" property="login"/></td>
					<td><jsp:getProperty name="user" property="password"/></td>
				</tr>
			</hbo:iterate>
		</table>
	</body>

</html>

A intenção aqui é dada a collection que está na request (como “usuarios”) a tag realiza a iteração dessa collection e a cada iteração
ela coloca o objeto no contexto de request como “user” para eu poder utilizá-lo com getProperty.

Quando eu executo ele exibe a seguinte mensagem: “Attempted a bean operation on a null object”

Pelo que eu entendi ele está tentando pegar um bean (“user”) que está nulo quando executa a tag getProperty.

Já verifiquei e a collection (“usuarios”) está vindo certo na request, então creio que o problema seja com a minha tag.

Só para esclarecer, a minha classe bean do tipo User contém os métodos getters e setters no padrão para eu poder utilizar getProperty (atributos privados “login” e “password” e métodos “getLogin”, “getPassword”, “setLogin” e “setPassword”).

Já verifiquei várias vezes e não consegui encontrar o erro. Como estou começando agora com taglibs acredito que eu esteja cometendo um erro besta e alguém mais experientes possa me ajudar.

obrigado