Olá pessoal, já tem um tempo que não escrevo um tutorial… mais tempo ainda sobre Flex. Resolvi escrever um pequeno tutorial explicando como usar validators e validators em runtime via actionscript. Como é uma dúvida que sempre aparece e eu já vi muita gente validando as coisas na mão em Flex, entã resolvi fazer este pequeno tutorialzinho.
Vejam o código abaixo:O resultado será:
O código é simples e temos apenas um container form para alinhar nossos items, dois campos de texto (um para email e outro para nome) e um botão de enviar. Também acrescentei um label para exibir o status da validação.
Reparem nesse trecho de código:
1 2 3 4 5 6 7 8 9 10 |
<mx:StringValidator source="{nome}" property="text"
required="true"
minLength="4"
requiredFieldError="Campo obrigatório"
tooShortError="Valor preenchido é muito curto"
trigger="{nome}" triggerEvent="change"
valid="status.text='Nome é válido'"/>
|
Ele é o nosso primeiro validator. O flex possui vários tipos de validators e cada um com sua classe específica, são eles:
- CreditCardValidator
- CurrencyValidator
- DateValidator
- EmailValidator
- NumberValidator
- PhoneNumberValidator
- RegExpValidator
- SocialSecurityValidator
- StringValidator
- Validator
- ZipCodeValidator
Mas como tudo em flex você pode criar seu próprio validator sem problemas. Agora que já conhecemos quem são os validators default vamos voltar ao nosso código. Para validar o campo de texto nome ( Propriedade source é quem define a quem este validator está associado (reparem no bind definido por {}) e a propriedade property do validator é responsável por identificar qual propriedade do nosso componente source deve ser analisada. O restante do código é para definir quando o valor informado será valido ou não. Então meu campo nome não será válido se for vazio (required=”true”) ou se tiver menos caracteres que 4 (minLength=”4”), logo abaixo defino a mensagem para cada erro… se não definirmos as mensagens elas seram exibidas em inglés através de mensagem default definida pelo validator. Além destas duas validações eu ainda poderia validator pelo tamanho máximo, mas para este exemplo apenas isso basta. As últimas propriedades definem quem vai disparar a validação e em qual evento isso vai ocorrer ( trigger=”{nome}” triggerEvent=”change”), estou dizendo que quem vai disparar a validação será o próprio campo nome no evento change dele, então a cada letra digitada ele será validado. A útlima propriedade diz o que fazer quando for válido, no caso estou apenas atribuindo uma nova mensagem ao meu label status. Uma outra forma de de utilizar os validatos seria através de um outro trigger como um botão de enviar, e é exatametne isso que estamos fazendo no nosso EmailVallidator. EmailValidator tem as mensagens diferentes de StringValidator pois ele será válido em condições diferentes mas reparem que é bem semelhante a forma de usar. Interessante, mas e se quisermos chamar nossos validators em runtime? Suponha que você possui um formulário grande e no click do botão enviar você precisa validar todo mundo e depois realizar algumas operações e depois dar um post para o servidor… como fazer? Definido o nosso MXML, ele é bem simples e praticamente igual ao anterior mas agora estamos usando um RichTextEditor pois estaremos simulando cadastro de um artigo em um blog. Também não definimos triggers para os validators pois iremos chamar cada validator via AS3. Só precisamos chamar o método validate dos nosso validadores e guardar o resultado dos métodos e depois verificar e o resultado é válido. var evTituloValid:ValidationResultEvent = tituloValidator.validate(); O resultado será o abaixo (para ver o código clique com o botão direito no exemplo):
10 Comentários to “Validators em Flex3”
Marcos Paulo diz:
12/09/2008 em 08:50 PM
Daniel,
Gostei do tutorial… Porém eu modificaria algumas coisas que acho que organizam e deixa o código mais enxuto.
Eu normalmente crio um Array contendo os meus validators em mxml:
<mx:array> <mx:stringvalidator /> <mx:stringvalidator /> <mx:stringvalidator /> </mx:array>e na evento click do botão, que no seu caso é cadastrarClickHandler, eu coloco desta forma:
var isValid:Boolean = true;
for each (var result:ValidationResultEvent in Validator.validateAll(arrayValidators))
if (result.type == ValidationResultEvent.INVALID)
isValid = false;
if (isValid)
{
// executo alguma coisa
}
else
{
// mostro uma msg de erro
}
Espero ter auxiliado ainda mais. Abraços, Marcos
Jonecir diz:
14/09/2008 em 03:53 PM
Olá, como validar número de telefone, uma vez que o padráo do Flex é um número com 10 digitos, que é o formato americano, tipo (954) 232-3924?
Daniel Lopes diz:
15/09/2008 em 05:13 PM
Olá Marcos, também uma boa forma e validar… mas a idéia é apenas mostrar que via AS você pode validar com validate() e o evento retornado. Existem várias formas de resolver isso, por exemplo criar uma classe que agrupe todos os validators.
Daniel Lopes diz:
15/09/2008 em 05:26 PM
Olá Jonecir, você pode usar um validator de expressão regular ou alterar o allowableCharacters ou então criar um validator de telefone brasileiro estenda do validator americano.
otimização de sites diz:
17/03/2009 em 11:06 PM
Excelente post! Como você disse no começo eu também era um dos que validava Flex na mão. Excelente tutorial, irá me ajudar muito. Já estou assinando seu feed!! Obrigado.
Moda diz:
26/05/2009 em 11:07 AM
Muito interessante! Essa validação ajuda muito!
Brayan diz:
18/08/2009 em 10:30 PM
Bacana cara, estou me baseando nessa daqui para fazer as minhas. ^^
Vs diz:
19/01/2010 em 01:42 PM
Gostei da seu tutorial..mas gostaria de saber se teria uma forma mudar o idioma das mensagens os atributos requiredFieldError(StringValidator) e invalidCharError(NumberValidator) sem user o ResourceBundle, por exemplo?
JB diz:
02/02/2010 em 12:05 PM
Gostaria de saber se existe alguma maneira “Default” do flex de colocar maskaras…. além das validações no envio do formulario.
amigo diz:
03/02/2010 em 08:10 AM
ótimo post , de verdade.. acho que vai adiantar o serviço de muita gente , abraço ai cara!
Comentário
CATEGORIAS
HomeDesign
SEO
Empreendimento
Cifras
Ruby e Rails
Flex
Photoshop
Flash
XHTML/CSS
JavaScript
Variados
Database
Firefox
Projetos
3D
Projetos
TextMate
Smalltalk
Mac
Livros
ARQUIVO
03/2010 (2)02/2010 (7)
01/2009 (4)
12/2009 (7)
11/2009 (4)
10/2009 (10)
09/2009 (7)
08/2009 (6)
07/2009 (12)
06/2009 (5)
05/2009 (6)
04/2009 (9)
03/2009 (14)
02/2009 (18)
01/2009 (14)
12/2008 (20)
11/2008 (18)
10/2008 (9)
09/2008 (12)
08/2008 (6)
07/2008 (12)
06/2008 (10)
05/2008 (15)
04/2008 (19)




GAIA, o maior amigo do programador Flash
comentado por criação de sites
Seja produtivo consumindo tomates
comentado por Gabriel Sobrinho
Cifras: novas funcionalidades
comentado por Juarez P. A. Filho
Cifras: novas funcionalidades
comentado por Mário Santos
Ganhador da promoção
comentado por Juarez P. A. Filho