Struts Formulário dinâmico

Galera,

tenho um formuário que a quantidade de texts é dinâmica. Estes itens serão inseridos para dentro de um Set no controlador. Eis a questão o que estou fazendo de errado que o meu set não está sendo populado pelo formulário.

Segue o código:

Formulário

<%@include file="import.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt-br" xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Question&aacute;rio RCBP</title>
	<s:head theme="ajax" />
	<link rel="stylesheet" href="css/vig_v3.css" type="text/css" />
</head>
<body>
<div id="barrabrasil"><a href="http://www.saude.gov.br" target="_blank"><img src="http://www.inca.gov.br/imagens/home/logo_saud2peq.gif" alt="Minist&eacute;rio da Sa&uacute;de" width="155" height="21" style="float:left;" /></a><a href="http://www.brasil.gov.br" target="_blank"><img src="http://www.inca.gov.br/imagens/home/brasil2.gif" alt="Brasil, um pa&iacute;s de todos" width="74" height="21" style="float:right;" /></a></div>
	<div id="main">
		<img src="imagens/header_rcbp.jpg" alt="Registros de C&acirc;ncer de Base Populacional - INCA" />
			<%@include file="menu.jsp"%>
		<div id="conteudo">
			<img src="imagens/tit_question.gif" alt="Registros de C&acirc;ncer de Base Populacional" />
			<div class="bluebox">
			<fieldset>
			<legend>Question&aacute;rio RCBP - parte 01</legend>
			<s:form method="post" action="salvarQuestionario1!salvar">
				<s:textarea name="questionario.abrangenciaPopulacao" label="Municípios" value="%{questionario.abrangenciaPopulacao}" cols="60" rows="5" labelposition="top" />
				<s:select name="questionario.anoImplantacao" list="anos" label="Ano de início das operações RCBP" value="%{questionario.anoImplantacao}" cssStyle="width:70px;" labelposition="top" />
				<s:select name="questionario.anoInicioColeta" list="anos" label="Ano início coleta de dados" value="%{questionario.anoInicioColeta}" cssStyle="width:70px;" labelposition="top" />
				<s:textfield name="questionario.orgaoResponsavelOrganograma" label="Órgão responsável pelo registro e inserção institucional no organograma" value="%{questionario.orgaoResponsavelOrganograma}" size="50" labelposition="top" />
				<tr>
					<td colspan="2">InfraEstrutura F&iacute;sica</td>
				</tr>
				<tr>
					<td colspan="2">
						<table cellpadding="0" cellspacing="2" class="tabela">
							<thead>
								<tr>
									<td>Itens</td>
									<td>Quantidade</td>
								</tr>
							</thead>
							<tbody>
								<s:iterator value="infraEstruturas" status="stat">
									<s:textfield name="questionario.infraEstruturas['%{#stat.index}'].qtdItem" id="questionario.infraEstruturas['%{#stat.index}'].qtdItem"  label="%{descInfraEstrutura}" value="%{questionario.infraEstruturas['%{#stat.index}'].qtdItem}" size="10"/>
								</s:iterator>
							</tbody>
						</table>
					</td>
				</tr>
				<tr>
					<td colspan="2">Quadro de Pessoal T&eacute;cnico-Administrativo</td>
				</tr>
				<tr>
					<td colspan="2">
						<table cellpadding="0" cellspacing="2" class="tabela">
							<thead>
								<tr>
									<td>Profissionais</td>
									<td>Com Capacita&ccedil;&atilde;o em RCBP</td>
									<td>Sem Capacita&ccedil;&atilde;o em RCBP</td>									
								</tr>
							</thead>
							<tbody>
								<s:iterator value="profissionalFuncoes" status="stat">
									<tr>
										<td><s:property value="descFuncaoProfissional" /></td>
										<td><input type="text" name="item" /> </td>
										<td><input type="text" name="item" /> </td>										
									</tr>
								</s:iterator>
							</tbody>
						</table>
					</td>
				</tr>
				<s:submit value="Avançar" name="redirect-action:prepararCategoria!preparar" />
				<s:submit value="Salvar Rascunho"  />
			</s:form>
			</fieldset>
			</div>
		</div>
		<%@include file="rodape.jsp"%>
</div>
</body>
</html>

Action:

package br.gov.inca.rcbp.action;

import java.util.ArrayList;
import java.util.Date;

import org.apache.log4j.Logger;

import br.gov.inca.publico.bean.ItenInfraEstrutura;
import br.gov.inca.publico.bean.ProfissionalFuncao;
import br.gov.inca.publico.dao.Dao;
import br.gov.inca.rcbp.bean.InfraEstruturaRCBP;
import br.gov.inca.rcbp.bean.QuestionarioRCBP;
import br.gov.inca.rcbp.bean.RCBP;
import br.gov.inca.rcbp.bean.StatusQuestionario;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;

@SuppressWarnings("serial")
public class Questionario1SalvarAction extends ActionSupport implements
		Preparable {
	private QuestionarioRCBP questionario;

	private String mensagem;

	private ArrayList<String> anos = new ArrayList<String>();

	private static Logger log = Logger.getLogger(Questionario1BuscarAction.class);

	private ArrayList<ItenInfraEstrutura> infraEstruturas = new ArrayList<ItenInfraEstrutura>();

	private ArrayList<ProfissionalFuncao> profissionalFuncoes;

	private ArrayList<InfraEstruturaRCBP> infraEstruturasRCBP = new ArrayList<InfraEstruturaRCBP>();

	public ArrayList<InfraEstruturaRCBP> getInfraEstruturasRCBP() {
		return infraEstruturasRCBP;
	}

	public void setInfraEstruturasRCBP(
			ArrayList<InfraEstruturaRCBP> infraEstruturasRCBP) {
		this.infraEstruturasRCBP = infraEstruturasRCBP;
	}

	public QuestionarioRCBP getQuestionarioRCBP() {
		return questionario;
	}

	public void setQuestionarioRCBP(QuestionarioRCBP questionario) {
		this.questionario = questionario;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public QuestionarioRCBP getQuestionario() {
		return questionario;
	}

	public void setQuestionario(QuestionarioRCBP questionario) {
		this.questionario = questionario;
	}

	public ArrayList<String> getAnos() {
		return anos;
	}

	public void setAnos(ArrayList<String> anos) {
		this.anos = anos;
	}

	public ArrayList<ProfissionalFuncao> getProfissionalFuncoes() {
		return profissionalFuncoes;
	}

	public void setProfissionalFuncoes(
			ArrayList<ProfissionalFuncao> profissionalFuncoes) {
		this.profissionalFuncoes = profissionalFuncoes;
	}

	public ArrayList<ItenInfraEstrutura> getInfraEstruturas() {
		return infraEstruturas;
	}

	public void setInfraEstruturas(ArrayList<ItenInfraEstrutura> infraEstruturas) {
		this.infraEstruturas = infraEstruturas;
	}

	public String salvar() {
		Dao<QuestionarioRCBP> daoQuestionario = new Dao<QuestionarioRCBP>();
		try {
			this.questionario.setSituacaoQuestionario(StatusQuestionario.RASCUNHO);
			// teste
			RCBP rcbp = new RCBP();
			rcbp.setIdInstituicao(550);
			this.questionario.setRcbp(rcbp);
			this.questionario.setQualEstudoSobrevida("");
			// fim teste
			daoQuestionario.inserirAtualizar(this.questionario);
			this.mensagem = "Rascunho salvo com sucesso!";
		} catch (Exception e) {
			log.fatal(e.getMessage());
		}
		return SUCCESS;
	}

	public void prepare() throws Exception {
		this.carregaAnos();
		this.carregaInfraEstrutura();
		this.carregaQuadroPessoal();
	}

	@SuppressWarnings("deprecation")
	public void carregaAnos() {
		Date date = new Date();
		for (int i = 1990; i <= (date.getYear() + 1900); i++) {
			String ano = Integer.toString(i);
			this.anos.add(ano);
		}
	}

	public void carregaInfraEstrutura() {
		Dao<ItenInfraEstrutura> daoItenInfra = new Dao<ItenInfraEstrutura>();
		try {
			this.infraEstruturas = (ArrayList<ItenInfraEstrutura>) daoItenInfra
					.listar(new ItenInfraEstrutura());
		} catch (Exception e) {
			log.info(e.getMessage());
		}
	}

	public void carregaQuadroPessoal() {
		Dao<ProfissionalFuncao> daoPessoal = new Dao<ProfissionalFuncao>();
		try {
			this.profissionalFuncoes = (ArrayList<ProfissionalFuncao>) daoPessoal
					.listar(new ProfissionalFuncao());
		} catch (Exception e) {
			log.info(e.getMessage());
		}
	}

}

bean:

package br.gov.inca.rcbp.bean;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.gov.inca.publico.bean.TipoFlag;

@Entity
@Table(name = "rcbp_questionario", schema = "rcbp")
@SequenceGenerator(name = "SEQUENCE", sequenceName = "rcbp.rcbp_questionario_id_questionario_rcbp_seq")
public class QuestionarioRCBP {

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE")
	@Column(name = "id_questionario_rcbp")
	private int idQuestionarioRCBP;

	@ManyToOne(cascade = CascadeType.PERSIST)
	@JoinColumn(name = "id_instituicao")
	private RCBP rcbp;

	@OneToMany(mappedBy = "questionario", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
	private Set<InfraEstruturaRCBP> infraEstruturas = new HashSet<InfraEstruturaRCBP>();

	@OneToMany(mappedBy = "questionario", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
	private Set<QuadroDePessoal> quadroDePessoal = new HashSet<QuadroDePessoal>();

	@Column(name = "ds_abrangencia_populacao")
	private String abrangenciaPopulacao;

	@Column(name = "aa_implantacao")
	private String anoImplantacao;

	@Column(name = "aa_inicio_coleta")
	private String anoInicioColeta;

	@Column(name = "nm_orgao_responsavel_organograma")
	private String orgaoResponsavelOrganograma;

	@Column(name = "fg_utiliza_sisbasepop_inca")
	private String utilizaSisbasepopInca = TipoFlag.NAO;

	@Column(name = "ds_versao_sisbasepop_inca")
	private String versaoSisbasepopInca;

	@Column(name = "fg_consulta_comissao_assessora")
	private String consultaComissaoAcessoria = TipoFlag.NAO;

	@Column(name = "fg_gerencia_recurso_ppi")
	private String gerenciaRecursoPPI = TipoFlag.NAO;

	@Column(name = "fg_gerencia_recursos_pav")
	private String gerenciaRecursoPAV = TipoFlag.NAO;

	@Column(name = "ds_periodo_enviado_iarc")
	private String periodoEnviadoIARC;

	@Column(name = "fg_consulta_banco_sim")
	private String consultaBancoSIM = TipoFlag.NAO;

	@Column(name = "fg_consulta_banco_apac")
	private String consultaBancoAPAC = TipoFlag.NAO;

	@Column(name = "fg_faz_seguimento")
	private String fazSeguimento = TipoFlag.NAO;

	@Column(name = "fg_participa_estudo_sobrevida")
	private String participalEstudoSobrevida = TipoFlag.NAO;

	@Column(name = "ds_qual_estudo_sobrevida")
	private String qualEstudoSobrevida;

	@Column(name = "fg_retorna_informacoes_sim")
	private String retornaInformacoesSIM = TipoFlag.NAO;

	@Column(name = "fg_vigilancia_dant")
	private String vigilanciaDANT = TipoFlag.NAO;

	@Column(name = "fg_regulacao_rao")
	private String regulacaoRAO = TipoFlag.NAO;

	@Column(name = "fg_controle_colo_mama")
	private String controleColoMama = TipoFlag.NAO;

	@Column(name = "ds_outra_atividade")
	private String outraAtividade;

	@Column(name = "fg_perfil_incidencia")
	private String perfilIncidencia = TipoFlag.NAO;

	@Column(name = "fg_analise_espacial_incidencia")
	private String analiseEspecialIncidencia = TipoFlag.NAO;

	@Column(name = "fg_relatorios_fontes_notificadoras")
	private String relatoriosFontesNotificadoras = TipoFlag.NAO;

	@Column(name = "dt_preenchimento")
	private Date dataPreenchimento;

	@Column(name = "st_questionario")
	private String situacaoQuestionario;

	public String getAbrangenciaPopulacao() {
		return abrangenciaPopulacao;
	}

	public void setAbrangenciaPopulacao(String abrangenciaPopulacao) {
		this.abrangenciaPopulacao = abrangenciaPopulacao;
	}

	public String getAnaliseEspecialIncidencia() {
		return analiseEspecialIncidencia;
	}

	public void setAnaliseEspecialIncidencia(String analiseEspecialIncidencia) {
		this.analiseEspecialIncidencia = analiseEspecialIncidencia;
	}

	public String getAnoImplantacao() {
		return anoImplantacao;
	}

	public void setAnoImplantacao(String anoImplantacao) {
		this.anoImplantacao = anoImplantacao;
	}

	public String getAnoInicioColeta() {
		return anoInicioColeta;
	}

	public void setAnoInicioColeta(String anoInicioColeta) {
		this.anoInicioColeta = anoInicioColeta;
	}

	public String getConsultaBancoAPAC() {
		return consultaBancoAPAC;
	}

	public void setConsultaBancoAPAC(String consultaBancoAPAC) {
		this.consultaBancoAPAC = consultaBancoAPAC;
	}

	public String getConsultaBancoSIM() {
		return consultaBancoSIM;
	}

	public void setConsultaBancoSIM(String consultaBancoSIM) {
		this.consultaBancoSIM = consultaBancoSIM;
	}

	public String getConsultaComissaoAcessoria() {
		return consultaComissaoAcessoria;
	}

	public void setConsultaComissaoAcessoria(String consultaComissaoAcessoria) {
		this.consultaComissaoAcessoria = consultaComissaoAcessoria;
	}

	public String getControleColoMama() {
		return controleColoMama;
	}

	public void setControleColoMama(String controleColoMama) {
		this.controleColoMama = controleColoMama;
	}

	public Date getDataPreenchimento() {
		return dataPreenchimento;
	}

	public void setDataPreenchimento(Date dataPreenchimento) {
		this.dataPreenchimento = dataPreenchimento;
	}

	public String getFazSeguimento() {
		return fazSeguimento;
	}

	public void setFazSeguimento(String fazSeguimento) {
		this.fazSeguimento = fazSeguimento;
	}

	public String getGerenciaRecursoPAV() {
		return gerenciaRecursoPAV;
	}

	public void setGerenciaRecursoPAV(String gerenciaRecursoPAV) {
		this.gerenciaRecursoPAV = gerenciaRecursoPAV;
	}

	public String getGerenciaRecursoPPI() {
		return gerenciaRecursoPPI;
	}

	public void setGerenciaRecursoPPI(String gerenciaRecursoPPI) {
		this.gerenciaRecursoPPI = gerenciaRecursoPPI;
	}

	public int getIdQuestionarioRCBP() {
		return idQuestionarioRCBP;
	}

	public void setIdQuestionarioRCBP(int idQuestionarioRCBP) {
		this.idQuestionarioRCBP = idQuestionarioRCBP;
	}

	public Set<InfraEstruturaRCBP> getInfraEstruturas() {
		return infraEstruturas;
	}

	public void setInfraEstruturas(Set<InfraEstruturaRCBP> infraEstruturas) {
		this.infraEstruturas = infraEstruturas;
	}

	public String getOrgaoResponsavelOrganograma() {
		return orgaoResponsavelOrganograma;
	}

	public void setOrgaoResponsavelOrganograma(String orgaoResponsavelOrganograma) {
		this.orgaoResponsavelOrganograma = orgaoResponsavelOrganograma;
	}

	public String getOutraAtividade() {
		return outraAtividade;
	}

	public void setOutraAtividade(String outraAtividade) {
		this.outraAtividade = outraAtividade;
	}

	public String getParticipalEstudoSobrevida() {
		return participalEstudoSobrevida;
	}

	public void setParticipalEstudoSobrevida(String participalEstudoSobrevida) {
		this.participalEstudoSobrevida = participalEstudoSobrevida;
	}

	public String getPerfilIncidencia() {
		return perfilIncidencia;
	}

	public void setPerfilIncidencia(String perfilIncidencia) {
		this.perfilIncidencia = perfilIncidencia;
	}

	public String getPeriodoEnviadoIARC() {
		return periodoEnviadoIARC;
	}

	public void setPeriodoEnviadoIARC(String periodoEnviadoIARC) {
		this.periodoEnviadoIARC = periodoEnviadoIARC;
	}

	public Set<QuadroDePessoal> getQuadroDePessoal() {
		return quadroDePessoal;
	}

	public void setQuadroDePessoal(Set<QuadroDePessoal> quadroDePessoal) {
		this.quadroDePessoal = quadroDePessoal;
	}

	public String getQualEstudoSobrevida() {
		return qualEstudoSobrevida;
	}

	public void setQualEstudoSobrevida(String qualEstudoSobrevida) {
		this.qualEstudoSobrevida = qualEstudoSobrevida;
	}

	public RCBP getRcbp() {
		return rcbp;
	}

	public void setRcbp(RCBP rcbp) {
		this.rcbp = rcbp;
	}

	public String getRegulacaoRAO() {
		return regulacaoRAO;
	}

	public void setRegulacaoRAO(String regulacaoRAO) {
		this.regulacaoRAO = regulacaoRAO;
	}

	public String getRelatoriosFontesNotificadoras() {
		return relatoriosFontesNotificadoras;
	}

	public void setRelatoriosFontesNotificadoras(
			String relatoriosFontesNotificadoras) {
		this.relatoriosFontesNotificadoras = relatoriosFontesNotificadoras;
	}

	public String isRetornaInformacoesSIM() {
		return retornaInformacoesSIM;
	}

	public void setRetornaInformacoesSIM(String retornaInformacoesSIM) {
		this.retornaInformacoesSIM = retornaInformacoesSIM;
	}

	public String getSituacaoQuestionario() {
		return situacaoQuestionario;
	}

	public void setSituacaoQuestionario(String situacaoQuestionario) {
		this.situacaoQuestionario = situacaoQuestionario;
	}

	public String getUtilizaSisbasepopInca() {
		return utilizaSisbasepopInca;
	}

	public void setUtilizaSisbasepopInca(String utilizaSisbasepopInca) {
		this.utilizaSisbasepopInca = utilizaSisbasepopInca;
	}

	public String getVersaoSisbasepopInca() {
		return versaoSisbasepopInca;
	}

	public void setVersaoSisbasepopInca(String versaoSisbasepopInca) {
		this.versaoSisbasepopInca = versaoSisbasepopInca;
	}

	public String getVigilanciaDANT() {
		return vigilanciaDANT;
	}

	public void setVigilanciaDANT(String vigilanciaDANT) {
		this.vigilanciaDANT = vigilanciaDANT;
	}

	/*
	 * private Set coordenadores = new HashSet();
	 *
	 * private Set situacoesAtuaisBase = new HashSet();
	 */


}