Boa Noite.
Eu validei os Formularios do Flex utilizando o StringValidator, NumberValidator e DateValidator.
Porem, quando executo o método Java de gravação, ele nao obedece as validações do Flex, e grava mesmo assim (claro ne?)
Gostaria de saber como fazer essa validação na hora de gravar como por exemplo, campos not null e outras validações.
Grato a todos.
Não sei se é o caso, tem um projeto Master Text Input…
http://code.google.com/p/mastertextinput/
tem varios exemplos na net…

Arautus para fazer a validação que você citou como exemplo ( validar campos not null ) você pode utilizar a propriedade required=true do validator, isso faz com que o validator execute uma regra para saber se o “source[property]” está null. Para configurar a mensagem de erro basta utilizar também a propriedade requiredFieldError do validator. Não sei se é somente esta sua duvida, caso tenha mais alguma outra continue postando.
Bruno Cebim eu não recomendo a utilização deste componente pois ele é extremamente grande para um textinput (O binário tem 368KB). Vale mais a pena você utilizar o textinput do flex e agregar somente as funcionalidades que voce realmente precisa, lembre que flex é para web e o tamanho final da sua aplicação é uma consideração importante.
Realmente é bem grandinha…
Utilizei em uma app pequena e não tive problema…
- vlws a dica Thiago
[quote=Thiago Felix]Arautus para fazer a validação que você citou como exemplo ( validar campos not null ) você pode utilizar a propriedade required=true do validator, isso faz com que o validator execute uma regra para saber se o “source[property]” está null. Para configurar a mensagem de erro basta utilizar também a propriedade requiredFieldError do validator. Não sei se é somente esta sua duvida, caso tenha mais alguma outra continue postando.
Bruno Cebim eu não recomendo a utilização deste componente pois ele é extremamente grande para um textinput (O binário tem 368KB). Vale mais a pena você utilizar o textinput do flex e agregar somente as funcionalidades que voce realmente precisa, lembre que flex é para web e o tamanho final da sua aplicação é uma consideração importante.[/quote]
Oi Taigo, obrigado pela resposta.
Na verdade as validações no Flex estão tudo prontas. Utilizei varias propriedades para validação. E utilizei tambem mensagem de erro para cada erro de validação.
O problema é: eu tenho botão gravar, que chama úm método Java para inserção desses dados no Banco. Quando clico para gravar, não importa se está validado ou nao pelo flex. Ele manda no banco de qualquer jeito.
Essa validação deve ser feita dentro desse método Java?
Obrigado pela atenção.
Abraços
Fala Arautus, beleza?
Pelo que entendi, você não está conseguindo saber se deu tudo certo antes de chamar o método no Java, né? Tenta algo assim:
var valid:Boolean = (Validator.validateAll([nameValidator, emailValidator, etcValidator]).length == 0);
if( valid )
{
// Manda pro Java
}
else
{
// Mensagem de erro
}
Você pode passar o nome dos validators para o método validateAll ou pode criar um código para fazer um “for each” em todos os validators que você criou e montar isso sozinho.
[quote=andre.gil]Fala Arautus, beleza?
Pelo que entendi, você não está conseguindo saber se deu tudo certo antes de chamar o método no Java, né? Tenta algo assim:
var valid:Boolean = (Validator.validateAll([nameValidator, emailValidator, etcValidator]).length == 0);
if( valid )
{
// Manda pro Java
}
else
{
// Mensagem de erro
}
Você pode passar o nome dos validators para o método validateAll ou pode criar um código para fazer um “for each” em todos os validators que você criou e montar isso sozinho.[/quote]
Era isso que eu precisava. Nao conhecia essa função validateAll. Ele passa um vetor contendo IDs dos Validator ne?. Aí é bom que nao preciso mexer no método Java.
Vou fazer a implementação e jaja vejo no que dá;
Grato
[quote=andre.gil]Fala Arautus, beleza?
Pelo que entendi, você não está conseguindo saber se deu tudo certo antes de chamar o método no Java, né? Tenta algo assim:
var valid:Boolean = (Validator.validateAll([nameValidator, emailValidator, etcValidator]).length == 0);
if( valid )
{
// Manda pro Java
}
else
{
// Mensagem de erro
}
Você pode passar o nome dos validators para o método validateAll ou pode criar um código para fazer um “for each” em todos os validators que você criou e montar isso sozinho.[/quote]
Cara ele está dando uma mensagem de alerta na frase de declaracao da variavel booleano. Mesmo eu dando um valor false para ele:
var valida:Boolean = false
ele entra direto no laço como se fosse true.
O que pode ser?
Estranho… Você deve ter esquecido de algo (imports, alterar variáveis, etc…)
Vou passar um exemplo completo. É só criar um projeto novo e colocar no Index.mxml para testar:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.validators.Validator;
private function salvar():void
{
var valid:Boolean = (Validator.validateAll([valName, valEmail]).length == 0);
if (valid)
{
// Aqui você chama seu método para gravar no banco
Alert.show("Os campos estão válidos, gravou no banco!!");
}
else
{
Alert.show("Você não preencheu todos os campos corretamente. Tente novamente! ;)");
}
}
]]>
</mx:Script>
<mx:StringValidator id="valName" source="{tiName}"
required="true" property="text"/>
<mx:EmailValidator id="valEmail" source="{tiEmail}"
required="true" property="text"/>
<mx:Panel height="170" width="300" horizontalAlign="center" horizontalCenter="0"
verticalCenter="0">
<mx:Form>
<mx:FormItem label="Nome:">
<mx:TextInput id="tiName"/>
</mx:FormItem>
<mx:FormItem label="E-mail:">
<mx:TextInput id="tiEmail"/>
</mx:FormItem>
</mx:Form>
<mx:Button label="Salvar"
click="salvar()"/>
</mx:Panel>
</mx:Application>
Espero ter ajudado! 
Pessoal, me xinguem.
Eu estava chamando diretamente o método Java no evento Click, e nao estava alterado para o método criado em AS3, por isso nao estava dando.
Cada coisa que agente faz…
Obrigado pela ajuda.
Caso Resolvido
Então pessoal,
Eu estou iniciando em Flex, mas gostei muito do componente MasterInputText, e n acho
ele grande, mesmo pq dependendo do projeto, muita coisa se repetiria, e além do que,
vc pode tirar algumas coisas que n te interessa.
Eu recomendo, e pra quem teve probs de validar o form antes de enviar os dados, usando
MasterInputText, o prob é facinho de resolver.
Falew!