Struts Validator: FormSet e i18n
Publicado por wpjr2 em Julho 4, 2008
Na aula de sábado passado, um de meus alunos (Rafael Albergaria) teve um problema ao utilizar o DynaValidatorForm para criar formulários dinâmicos no Struts e para estes serem validados pelo Jakarta Commons Validator 1.3.1. Este exercício está relacionado ao capítulo 9 que vimos na aula passada.
O problema foi que, na definição da validação do formulário (validation.xml), o <formset/> foi definido para uma localização específica (pt, BR), causando um problema ao executar a aplicação sobre um browser que não estivesse definido nesta localização.
<formset country=”BR” language=”pt”>
<form name=”EmpresaForm”>
<field depends=”required” property=”nome”>
<arg key=”empresa.nome” position=”0″ />
</field>
</form>
</formset>
Durante o exercício em sala de aula, como o meu browser estava definido para esta localização, o formset era encontrado corretamente e a validação era executada com sucesso. O problema ocorre quando a localização do browser está definida para um valor diferente do definido no <formset/>. Quando isto acontece, o Commons Validator não consegue encontrar o form definido no validation.xml, desta forma não executando a validação.
Para este problema, existem duas soluções:
a) não definir a localização no formset, tornando-o genérico para todas as localizações e idiomas
b) se for necessário definir a localização (validações para linguas específicas), implementar a validação específica em uma subclasse de DynaValidatorForm, utilizando-a na definição do form no arquivo de configurações struts-config.xml