12. Exemplo 09B – Validação do modelo
A aplicação que se segue é uma variante da anterior. Anteriormente, para a ação A:
- o ficheiro das regras de validação chamava-se A-validation.xml
- o ficheiro das mensagens de erro da validação chamava-se A.properties
Aqui, para a ação A do modelo M:
- o ficheiro das regras de validação chama-se M-validation.xml
- o ficheiro das mensagens de erro da validação chama-se M.properties
- O ficheiro A-validation.xml ainda existe, mas com um conteúdo que redireciona as regras de validação para o ficheiro M-validation.xml.
Estas são as únicas alterações que iremos introduzir em relação à versão anterior.
O projeto NetBeans é o seguinte:
![]() |
- em [1], a ação [FormInt] e o seu ficheiro de validação
- para [2], o seu modelo [FormIntModel], o ficheiro de validação desse modelo e as mensagens associadas a esse modelo.
Todo 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/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 deste ficheiro. Vamos aceitá-lo tal como está, tendo em conta a sua funcionalidade: transferir as regras de validação para o modelo. Podemos perguntar-nos 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 as diferentes ações, é preferível delegar essas 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 o leitor a testar esta nova versão.
