Problema com List num Form do Struts 1.3.5

Estou com um problema em mapear uma tela de cadastro num Form do Struts.

Tenho um simples cadastro onde eu possuo contatos, +/- dessa forma:
Nome:
RG:
CPF:

Telefone:
Celular:
E-mail:

Esse formulário possui mais de um Bean representado: possui um bean Aluno (com Nome, Rg e CPF) e um List de Contato.
Cada bean Contato possui um atributo “tipo” (Ex: Telefone) e um “dado”.

Código da Form:

[code]
package …form;

imports…

public class AlunoCadastroForm extends ActionForm {

private Aluno aluno;
List<Contato> lstContato;

public AlunoCadastroForm() {
	init();
}
protected void init()
{
	this.aluno = new Aluno();
	
	Contato contatoTelefone = new Contato();
	contatoTelefone.setTipo("Telefone");
	Contato contatoCelular = new Contato();
	contatoCelular.setTipo("Celular");
	Contato contatoEmail = new Contato();
	contatoEmail.setTipo("Email");
	
	lstContato = new ArrayList<Contato>();
	lstContato.add(contatoTelefone);
	lstContato.add(contatoCelular);
	lstContato.add(contatoEmail);
}
public Aluno getAluno() {
	return aluno;
}
public void setAluno(Aluno aluno) {
	this.aluno = aluno;
}

public List<Contato> getLstContato() {
	return this.lstContato;
}
public void setLstContato(List<Contato> lstContato) {
	this.lstContato = lstContato;
}

public void reset(final ActionMapping map, final HttpServletRequest req) {
	init();
}


public Contato getContato(int index)
{
	return (Contato) this.lstContato.get(index);
}

}[/code]

Código da página JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<html:html>
	<head><title>Cadastro de Aluno</title>
	</head>
<html:errors/>
<H1>Cadastro de Aluno</H1>
<br>
<html:form action="/actionCadastraAluno" focus="aluno.nome">
    <input type="hidden" name="acao" value="salvar"/>
    <html:hidden property="aluno.id" /><br>

	<table width="580">
		<tr>
			<td colspan="3">Dados Pessoais </td>
		</tr>
		<tr>
			<td colspan="3">Nome:
				<html:text property="aluno.nome" size="60" maxlength="100"/> *
			</td>
		</tr>
		<tr>
			<td width="205">RG:
				<html:text property="aluno.rg" size="23" maxlength="30"/> *
			</td>
			<td colspan="2">CPF: 
				<html:text property="aluno.cpf" size="15" maxlength="11"/> * Somente números
			</td>
		</tr>
		<c:if test="${empty AlunoCadastroForm.lstContato}">
  			<br>Sem Contato
  		</c:if>
		<c:forEach var='contato' items='${AlunoCadastroForm.lstContato}'>
			<html:hidden name="contato" property="tipo"/>
			<tr><td colspan="3">
				<bean:write name="contato" property="tipo"/>: <html:text name="contato" property="dado" size="40" maxlength="40"/>
				</td>
			</tr>
		</c:forEach>
	</table>
<br>
<html:submit>Enviar dados</html:submit><br/>
</html:form>
</html:html>

Até aqui tudo roda certinho. Mas na Action, eu tento ler os dados da Form ao dar o submit, e não consigo ler os dados do List de Contato.

Vejam que eu construo a parte de contatos no formulário dinamicamente. Ele não dá erro algum na hora de carregar a página. Mas parece que ele não consegue popular os campos (atributos) de cada Contato no List.

trexo do código da minha Action (apenas testando):

public ActionForward salvar(ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response)
	throws Exception {
		AlunoCadastroForm cadForm = (AlunoCadastroForm)form;
		Aluno aluno = cadForm.getAluno();
		
		AlunoService servAluno = new AlunoServiceImpl();
		
		System.out.println("Nome :"+aluno.getNome());
		System.out.println("RG :"+aluno.getRg());
		System.out.println("CPF :"+aluno.getCpf());
				
		System.out.println("contatos form ===========");
		for (int i=0;i<cadForm.getLstContato().size();i++) {
			
			System.out.println("tipo :"+cadForm.getLstContato().get(i).getTipo());
			System.out.println("dado :"+cadForm.getLstContato().get(i).getDado());
		}
		
		return(mapping.findForward("CadastraAluno"));
	}

retorna:

tipo : Telefone
dado: null
tipo : Celular
dado: null
tipo : E-mail
dado: null

ja tentei mudar a forma de colocar os campos no formulário JSP sem sucesso.

Para carregar a página com os dados para “editar” eles, consigo carregar os dados sem problemas.

alguém pode me ajudar? é urgente isso

desde já agradeço

Opa,

você tem que criar uma propriedade em array no seu actionform para obter os valores do form porque não há referências entre eles, por isto não tem valor.

:okok:

hummm… não entendi muito bem. Você poderia me dar um exemplo de como fazer isso?

obrigado