Dave, you are right > ... > > That's not much to go on. > > Dave
Here a small example. FORM: <title><s:property value="#title"/></title> </head> <body> <h2><s:property value="#title"/></h2> <s:actionerror /> <s:actionmessage /> <s:form method="post"> <s:if test="acao == 'Inserir'"> <s:hidden name="tipoHistorico.codTipoHistorico" value="%{tipoHistorico.codTipoHistorico}" label="%{getText('label.tipoHistorico.codTipoHistorico')}" /> </s:if> <s:else> <s:hidden name="tipoHistorico.codTipoHistorico" value="%{tipoHistorico.codTipoHistorico}"/> <s:textfield disabled="true" name="mostrar" value="%{tipoHistorico.codTipoHistorico}" label="%{getText('label.tipoHistorico.codTipoHistorico')}" size="20"/> </s:else> <s:textfield disabled="desativar" name="tipoHistorico.tipoHistorico" value="%{tipoHistorico.tipoHistorico}" label="%{getText('label.tipoHistorico.tipoHistorico')}" size="50"/> <s:submit value="%{getText('button.label.cancel')}" name="redirect-action:tipoHistoricoLicitacaoDef"/> <s:if test="acao == 'Inserir'"> <s:submit value="%{getText('button.label.submit')}" action="tipoHistoricoLicitacaoDefEdit"/> </s:if> <s:elseif test="tipoHistorico!=null && acao == 'Editar'"> <s:submit value="%{getText('button.label.submit')}" action="tipoHistoricoLicitacaoDefEdit"/> </s:elseif> <s:elseif test="tipoHistorico!=null && acao == 'Excluir'"> <s:submit value="%{getText('button.label.submit')}" action="tipoHistoricoLicitacaoDefEdit"/> </s:elseif> </s:form> </body> </html> ACTION: private TipoHistorico tipoHistorico; public String doCrud() throws Exception { if (getAcao().equalsIgnoreCase("Inserir")){ try { tipoHistoricoFacade.salvar(tipoHistorico); } catch (ApplicationException ex) { session.put("MENSAGEM_ERRO_APLICACAO", ex.getMessage()); return "error"; } } else if (getAcao().equalsIgnoreCase("Editar")){ try { tipoHistoricoFacade.alterar(tipoHistorico); } catch (ApplicationException ex) { session.put("MENSAGEM_ERRO_APLICACAO", ex.getMessage()); return "error"; } }else if (getAcao().equalsIgnoreCase("Excluir")){ try { tipoHistoricoFacade.excluir(tipoHistorico); } catch (ApplicationException ex) { session.put("MENSAGEM_ERRO_APLICACAO", ex.getMessage()); return "error"; } } return SUCCESS; } and all setters and getters XML CONFIGURATION: <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="tipoHistorico.tipoHistorico"> <field-validator type="requiredstring"> <param name="trim">true</param> <message key="errors.required.tipoHistorico.tipoHistorico"/> </field-validator> <field-validator type="stringlength"> <param name="maxLength">30</param> <param name="minLength">4</param> <param name="trim">true</param> <message>Descrição Tipo Historico deve ter entre 4 e 30 caracteres</message> </field-validator> </field> </validators> The error occurs only if data is not in accordance with the rules of validation. Regards, Jair