Configurando Validators
Através de configurações globais
Em um nível global, você pode substituir o ExceptionFactory padrão, para mudar o tipo de exceção levantada por seus validadores. Você não pode definir a mensagem que acompanha a exceção em um nível global, uma vez que você deve manter essas diferentes, a fim de saber qual dos validadores é o que falhou. Você pode configurá-lo como este:
No Studio, você pode criar uma validação: config elemento global, largando um componente de validação em seu fluxo e clicando no ícone de configuração add:
Em seguida, selecione a configuração de validação:
+ 

Uma janela de configuração será aberta onde você pode fornecer o nome da classe de um ExceptionFactory ou uma referência a um bean Spring. Você também pode definir as configurações de Internacionalização para as mensagens que vão com as exceções.
No Validador nível individual
Em qualquer um dos validadores descrito acima, você pode personalizar o tipo de exceção lançada, fornecendo o nome canônico de um tipo de exceção. Se esse tipo de exceção não substitui o Exception construtor (String) um
IllegalArgumentException
será lançada. Você também pode personalizar a mensagem da exceção lançada.
Clique na
Customize
guia, em seguida, definir a mensagem eo tipo de exceção para o seu validador.
A definição acima substitui o ExceptionFactory mundial configurado na configuração de validação.
NotAnAdultException
Espera-se que ter um construtor recebendo um argumento String, caso contrário ele irá falhar (que será validado na hora de início).
Abra o elemento global que é referenciado pelo seu validador e definir os campos correspondentes:
As configurações i18n são opcionais, mas se você especificar qualquer coisa nele, em seguida, o campo Caminho do pacote é obrigatório. O campo localidade é opcional eo padrão para a localidade do sistema. No entanto, é mais útil quando usado com uma expressão que retorna do local a ser aplicado sobre o evento dada, tal como
#[tenantLocale]
. Este valor assume que no momento em que o validador é executado, haverá uma flowVar chamada tenantLocale
que especifica qual localidade para usar.Validando muitas condições de uma Vez
Há situações em que você pode querer avaliar várias condições, dos quais mais de um poderia deixar simultaneamente.Nestes casos, é ideal para gerar um único erro que contém todas as descrições.
Sobre a toda validador:
- Todas as validações são executadas, mesmo que todos eles falham
- Se qualquer uma das validações falhar, uma única exceção é lançada. A excepção contém uma mensagem de várias linhas em que cada linha corresponde a cada validação falhar.
- Validadores são executadas sequencialmente usando a linha do fluxo, mas desde validadores não causam quaisquer efeitos secundários, a ordem não importa
- Ao contrário do resto dos validadores, a todos validador não permite que você personalize diretamente o tipo de exceção ou a mensagem através da validação: elementos de exceção ou exceção de fábrica (você pode no entanto personalizar a mensagem dos validadores internos).
Exemplo
Aqui está um exemplo de como usar o All Validador:
Suponha que alguém está postando a seguinte JSON através de um ouvinte http:
1
2
3
4
5
<validation:all>
<validation:is-true expression="#[age > 21]" />
<validation:is-url url="#[url]" />
<validation:is-not-empty value=#[name] />
</validation:all>
Agora, considere o seguinte configuração:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="validationsFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/user" allowedMethods="POST" doc:name="HTTP"/>
<!-- transform to Map to simplify MEL expressions -->
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
<validation:all doc:name="Validation">
<validation:validations>
<validation:is-not-empty doc:name="Validation" value="#[payload.firstName]" message="Firstname cannot be empty"/>
<validation:is-not-empty doc:name="Validation" value="#[payload.lastName]" message="Lastname cannot be empty"/>
<validation:is-number message="Not an adult" value="#[payload.age]" minValue="18" numberType="INTEGER"/>
<validation:is-email email="#[payload.email]" />
<validation:matches-regex message="Invalid SSN" value="#[payload.ssn]" regex="^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$"/>
<validation:validate-size value="#[payload.ssn]" min="11" max="11" message="SSN too short"/>
</validation:validations>
</validation:all>
<set-payload value="OK" doc:name="Set Payload"/>
</flow>
O exemplo acima inclui um
all
validador que valida simultaneamente que: * Primeiro e último nome não são cadeias vazias * que a idade é um número inteiro válido acima de 18 * Que o endereço de e-mail é válido * Que o número de segurança social tem o tamanho e partidas correta uma expressão regularEdifício com Maven
Ao construir um aplicativo com Maven, a seguinte dependência precisa ser adicionado ao arquivo pom.xml do aplicativo:
1
2
3
4
5
<dependency>
<groupId>org.mule.modules</groupId>
<artifactId>mule-module-validation</artifactId>
<version>${mule.version}</version>
</dependency>
Esta página pressupõe que tenha
Se não, você pode substituir
<mule.version></mule.version>
propriedade definida na sua pom.xml
. Se não, você pode substituir
${mule.version}
com a versão de tempo de execução de mula que está sendo usado.
Nenhum comentário:
Postar um comentário