struts2 tag select

bem galera estou com um problema com a tag select do struts2. o negocio é o seguinte, eu tenho um formulario simples com campos de texto e um combo, tenho tb meu validadtion.xml da minha action enquanto isso tudo bem… o problema é o seguinte… quando vou chamar a pagina que esta meu formulario o meu select funciona blz mais quando dou um submit no forme e ele vai verificar as validações ele retorna para a pagina exibe todas as mensagens de erros que estão mapeadas do select pra cima e tudo que esta do select pra baixo ele perde e da esse erro.

tag ‘select’, field ‘list’, name ‘administrador.tipoAdministrador.tipoAdm’: The requested list key ‘tipos’ could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

segue o codigo

<s:form action="inserirEditarAdmAction!inserirEditarAdm.action">
	
	<input type="hidden" name="opcao" value="<s:property value="opcao"/>"/>
    <s:textfield name="administrador.nome" label="Nome"></s:textfield>
    <s:textfield name="administrador.sobrenome" label="Sobrenome"></s:textfield>
    <s:select name="administrador.tipoAdministrador.tipoAdm" list="tipos" listKey="id" listValue="nome" label="Tipos"></s:select>
  	<s:textfield name="administrador.login" label="Login"></s:textfield>
  	<s:password name="administrador.senha" label="Senha"></s:password>
  	<tr class="classBg">
  		<td colspan="2" style="text-align: center;">Endereço</td>
  	</tr>
  	<s:textfield name="administrador.endereco.logradouro" label="Logradouro"></s:textfield>
  	<s:submit value="add" cssClass="classBg"></s:submit>
</s:form> 
<validators>

	<field name="administrador.nome">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Nome invalido</message>
		</field-validator>
		
	</field>
	
	<field name="administrador.sobrenome">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Sobrenome invalido</message>
		</field-validator>		
	</field>
	
	<field name="administrador.login">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Login invalido</message>
		</field-validator>		
	</field>
	
	<field name="administrador.senha">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Senha invalida</message>
		</field-validator>		
	</field>
	
	<field name="administrador.tipoAdministrador.tipoAdm">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Tipo Invalido</message>
		</field-validator>		
	</field>
	
	<field name="administrador.email">
		<field-validator type="email">
			<param name="trim">true</param>
			<message>Email invalido</message>
		</field-validator>		
	</field>
	
	<field name="administrador.endereco.logradouro">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>Logradouro invalido</message>
		</field-validator>		
	</field>
	
</validators>
private Administrador administrador;
private TipoAdministrador tipoAdministrador; 
private List<TipoAdministrador> tipos;

public String inserirEditarAdm(){
		String opcao = request.getParameter("opcao");
		String retorno = INDEX;
		
		if(INSERIR.equals(opcao)){
			try {
				administrador.setTipoAdministrador(tipoAdministrador);
				fachada.inserirAdministrador(administrador);
			} catch (EntidadeJaExistenteException e) {
				addActionError("Login já existente !!");
				retorno = INPUT;
			}
			retorno = SUCCESS;
		}else if(EDITAR.equals(opcao)){
			//implementar
			retorno = SUCCESS;
		}
		
		return retorno;
	}

Isso ocorre porque após a falha na validação a lista tipos não é mais populada.

Há duas opções para resolver este problema:

  1. colocar o código que popula tipos no método prepare() (herdado de ActionSupport).

  2. colocar o código que popula tipos no método getTipos()

Espero ter ajudado.

Mas, na boa… não prefere usar validações por anotações do próprio Struts2 ou via anotações do Hibernate Annotations pelo uso do Full Hibernate Plugin?
Essas validações por XML são muito trabalhosas!

cara ja n acho isso… não gosto muito de anotation prefiro usar xml acho que fica mais organizado… e tb pra separar responsabilidades ne… vlw ai pela resposta… ta funcionando agora :)…