Skip to content

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

A aplicação seguinte é uma variação da anterior. Anteriormente, para a ação A:

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

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

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

Estas são as únicas alterações que iremos fazer à versão anterior.

O projeto NetBeans é o seguinte:

  • em [1], a ação [FormInt] e o seu ficheiro de validação
  • em [2], o seu modelo [FormIntModel], o ficheiro de validação para este modelo e as mensagens associadas a este modelo.

Tudo o resto é idêntico à versão anterior.

O ficheiro [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/exemple-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 tentaremos explicar o conteúdo deste ficheiro. Vamos aceitá-lo tal como está, tendo em mente o seu objetivo: delegar regras de validação ao modelo. Poderá perguntar-se para que serve isto. Na verdade, o modelo, as suas regras de validação e as 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 diferentes ações, é melhor delegar estas funcionalidades ao modelo.

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

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

Convidamos os leitores a testar esta nova versão.