Duas coisas que tenho lido como boas práticas no uso de Struts:
1 - todos os atributos do ActionForm (incluindo ValidatorForm etc) devem ser do tipo String
2 - utilizar BeanUtils.copyProperties() para preencher o objeto de negócios (da camada de Modelo) com os atributos do Form.
O problema é que utilizamos nas classes de negócio atributos GregorianCalendar para datas e nos ActionForm’s utilizamos atributos String. Sendo assim, o BeanUtils.copyProperties() dá pau pois tenta passar um atributo String para um GregorianCalendar.
Resolvemos essa questão lá na empresa com uma gambiarra, não ficou muito bom… como o pessoal costuma resolver isso?
abração!