Skip to content

12. Exemplo 09B – Validação do modelo

A aplicação a seguir é uma variante da anterior. Anteriormente, para a ação A:

  • o arquivo de regras de validação se chamava A-validation.xml
  • o arquivo de mensagens de erro da validação se chamava A.properties

Aqui, para a ação A do modelo M:

  • o arquivo de regras de validação se chama M-validation.xml
  • o arquivo de mensagens de erro da validação se chama M.properties
  • O arquivo A-validation.xml ainda existe, mas com um conteúdo que redireciona as regras de validação para o arquivo M-validation.xml.

Essas são as únicas alterações que faremos em relação à versão anterior.

O projeto do NetBeans é o seguinte:

  • em [1], a ação [FormInt] e seu arquivo de validação
  • em [2], seu modelo [FormIntModel], o arquivo de validação desse modelo e as mensagens associadas a ele.

Todo o restante é idêntico à versão anterior.

O arquivo [FormInt-validation.xml] é o seguinte:


<!--
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//
EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-->
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//
EN" "http://localhost:8084/exemplo-09B/example/xwork-validator-1.0.2.dtd">

<validators>
  <field name="model" >
    <field-validator type="visitor">
      <param name="appendPrefix">false</param>
      <message/>
    </field-validator>
  </field>
</validators>

Não vamos tentar explicar o conteúdo desse arquivo. Vamos aceitá-lo como está, lembrando-nos de sua funcionalidade: transferir as regras de validação para o modelo. Pode-se perguntar para que isso serve. Na verdade, o modelo, suas regras de validação e suas mensagens podem já existir e ser utilizados por diferentes ações. Em vez de repetir as mesmas regras de validação e mensagens para as diferentes ações, é preferível, portanto, delegar essas funcionalidades ao modelo.

O arquivo [FormIntModel-validation.xml] é idêntico ao arquivo [FormInt-validation.xml] da versão anterior.

O arquivo [FormIntModel.properties] é idêntico ao arquivo [FormInt.properties] da versão anterior.

Recomenda-se ao leitor que teste esta nova versão.