Struts e form Validate

Pessoal, estou desenvolvendo um projeto com Struts/Hibernate

mas estou com 2 grandes problemas

  1. desenvolvi uma view que mostra todos os municipios e estados cadastrados no banco de dados, e um formulario para cadastrar mais.

    Um action que testa se o formulário é diferente de null e insere no banco, depois busca dotos os municipios e estados e salva um ArrayList de BEANS que contem esses valores do REQUEST…

    Aqui acontece meu problema, eu preciso validar o formBean, entao coloquei a funcao validade(…) dentro da minha classe que extende ActionForm … esse validade testa se os valores sao validos, se nao forem retorna um erro… (padrao STRUTS)

    acontece que se o erro acontecer (usuario nao preencheu corretamente o formulario) o request da pagina deixa de existir (obvio) e a lista de municipios cadastrados nao aparece mais…

    Tem como eu recolocar no request essa lista, mesmo ocorronde o erro? Sera que eu deveria retirar a validação do Form e colocar no Action? utilizar algun plugin ?

  2. essa é rapida: alguem tem algum exemplo que como abrir conexão corretamente com Struts-Hibernate?

Caro colega,
segue um exempo que você pode utilizar na sua classe de action:
Obs. Observe no final do exemplo onde será verificada uma lista de erros, ou seja é verificado se existe algum erro “errors.isEmpty”. Se existir, os erros são salvados no request da sua aplicação com o método
saveErrors(request, errors) que é herdado da superclasse Action. Com isso o seu jsp já irá capturar os erros com <html:errors/>

if (!errors.isEmpty()){
saveErrors(request, errors);
return (mapping.findForward(“falha”));
}

ActionErrors errors = new ActionErrors();

if (!(usuario.equals(login.getUsuario())&&senha.equals(login.getSenha()))){
errors.add(“login”, new ActionError(“login.validacao”));
}else{

  ArrayList lista = new ArrayList();

  Permissao permissao = new Permissao();
  permissao.setFuncionalidade("Cadastro de Cliente");

  lista.add(permissao);

  permissao = null;

  permissao = new Permissao();
  permissao.setFuncionalidade("Manutenção de Assinatura");

  lista.add(permissao);

  usua.setLista(lista);

  usua.setNome(nome);
  usua.setSenha(senha);
  usua.setUsuario(usuario);
  usua.setSistema(sistema);
  request.getSession().setAttribute("usuario", usua);
  request.getSession().setAttribute("permissoes", lista);

}

if (!errors.isEmpty()){
saveErrors(request, errors);
return (mapping.findForward(“falha”));
}

Atenciosamente,
Thiago