Multiplicar campos do form e salvar no banco
09/08/2012 12:23
0
Bom dia pessoal, gostaria que vocês me ajudassem mais uma vez, é o seguinte:

Tenho 3 campos no formulário: valorUnitario, margem e valorVenda(tipo hidden).
quando eu preencher os campos margem e valorUnitario e clicar no botao de criar, quero que o valor do campo valorVenda seja a multiplicação entre valorUnitario e margem.

Como eu pego esses valores passados no formulário?
Alguém se habilita??

Atenciosamente,
Ericke Accyole.
Tags: regra,negocio,formulario,banco, multiplicar


0
Pelo que entendi, você quer pegar já direto o valor multiplicado, certo?

O jeito que eu conheco é utilizando uma função do javascript no onchange, que realiza a multiplicação e deixa o valor em algum input.
Lembrando que se deve acreditar nos dados de entrada do usuário. Você deve fazer a consistencia no lado do servido.
09/08/2012 12:37


0
Corrigindo:
Lembrando que nunca podemos acreditar nos dados de entrada do cliente por motivos de seguranca. Você deve fazer a consistencia no lado do servidor.
09/08/2012 12:38


0
Mussatto, o que eu quero é fazer a consistencia no lado do servidor mesmo como você disse, acho q eu nao me expressei bem.

Como eu faria isso, pegaria esses campos e na regra de negocio dentro do save eu faria esse calculo??? Voce teria como me dar um exemplo???

Atenciosamente,
Ericke Accyole.
09/08/2012 12:52


1
Olha Ericke existe a Remote Function que você pode associar a um evento do javascript como acontece no link que estou postando e você usar isso passando os parâmetros para o server e lendo o resultado para poder atualizar o seu form.

Lembrando que isso gera uma requisição então cuidado onde coloca ;-) blza, espero ter ajudado.
09/08/2012 13:07


1
As validações eu faço por camada.
Realizo as validações de consistencia no controller, depois no service e por ultimo nos models, dado os valores de entrada.

Os valores "fixos" devem estar em algum lugar dentro do sistema.
Seja uma tabela, arquivo de configuração, etc (depende do que fica melhor pra sua logica).
Quando o usuário realiza o submit, eu realizo as contas recuperando esses valores e não com os recebidos do formulário.

Agora se todos forem inputados, tem que realizar as contas no controller.
09/08/2012 13:26


0
Agora voce enteu o que eu quero mussato, fazer a regra no método save do meu controller,
agora como ainda não estou muito familiarizado com a linguagem que o grails usa, como farei essa regra, poderia dar um exemplo??

em java faria um requestParameters nos campos q eu quero, faria a minha regra e instanciaria o objeto e setava os atributos.

Como eu faria isso no grails??

Agredeço pela ajuda.

Atenciosamente,
Ericke Accyole.
09/08/2012 21:53


0
Por padrão usamos commandObjects pra validar as actions...

Eles são bem legais, você consegue definir uma action da seguinte maneira:
def save(SaveCommand command){
...(codigo)
}

Exemplos:
http://www.intelligrape.com/blog/2009/05/26/command-objects/
http://padcom13.blogspot.com.br/2010/10/grails-controllers-and-command-objects.html
http://sysgears.com/comment/1954
10/08/2012 12:43


0
Ahm, verdade, actions como métodos é a partir do grails 2.

Mas dá pra usar commandObjects usando assim tbm (como closure):
def save={ CommandObjectSave command ->
...(codigo)
}
10/08/2012 12:47


0
Pessoal eu consegui assim:
No método save do controller da minha classe, eu adicionei essa linha de código:

def save() {
def produtoInstance = new Produto(params)
=> produtoInstance.setValorVenda(produtoInstance.getMargem()* produtoInstance.getValorUnitario())
...

nessa linha q eu adicionei eu seto a variável q eu quero já colocando a multiplicação dos campos vindos do formulário.

Resolvido meu caso.

Atenciosamente,
Ericke Accyole.
13/08/2012 17:20



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto