Cálculos em Tempo de Execução
27/06/2016 14:44
0
Boa tarde amigos, tenho uma duvida que acredito não seja tão difícil porem não solucionei utilizando grails.

Bem tenho o seguinte domain:

String valor1;
String valor2;

String Resultado;

gostaria de saber como faço para que quando digitado o valor1 e valor2 na minha View, aparecesse automaticamente a soma dos dois valor no resultado.
 
Alguém poderia me exemplificar?
desde já Agradeço!
Tags: Grails


0
Oi Arlindo,

a solução mais fácil para isto seria usando JavaScript mesmo. Imaginando que no seu arquivo GSP existam estes dois campos, ficaria algo mais ou menos assim:

var valorA = document.getElementById("valorA").value
var valorB = document.getElementById("valorB").value
// imaginando que seja um campo do tipo textual
document.getElementById("resultado").value = valorA + valorB


0
Oi Kiko, é seguinte:
esses comandos que você descreveu acima deve ser inserido direto no form.gsp?
pegando seu exemplo tenho a seguinte DOMAIN:

class Soma {
String valorA;
String valorB;
String resultado;
  static constraints = {
}
}


e o seguinte FORM.GSP:

<%@ page import="calculo.Soma" %>
<div class="fieldcontain ${hasErrors(bean: somaInstance, field: 'resultado', 'error')} required">
<label for="resultado">
<g:message code="soma.resultado.label" default="Resultado" />
<span class="required-indicator">*</span>
</label>
<g:textField name="resultado" required="" value="${somaInstance?.resultado}"/>
</div>
<div class="fieldcontain ${hasErrors(bean: somaInstance, field: 'valorA', 'error')} required">
<label for="valorA">
<g:message code="soma.valorA.label" default="Valor A" />
<span class="required-indicator">*</span>
</label>
<g:textField name="valorA" required="" value="${somaInstance?.valorA}" />
</div>
<div class="fieldcontain ${hasErrors(bean: somaInstance, field: 'valorB', 'error')} required">
<label for="valorB">
<g:message code="soma.valorB.label" default="Valor B" />
<span class="required-indicator">*</span>
</label>
<g:textField name="valorB" required="" value="${somaInstance?.valorB}"/>
</div>

// Ai fiquei na dúvida onde alterar!
// desde já agradeço a ajuda!
28/06/2016 15:18


0
Oi Arlindo, exatamente, no GSP


0
alterei no <g:textField mas não funcionou, poderia me exemplificar?
agradeço!
29/06/2016 11:37


0
Olá Arlindo,
  Conhece JavaScript? Dê uma olhada nesse link: http://www.w3schools.com/js/js_arithmetic.asp
30/06/2016 14:34


0
Oi, a logica dos cálculos já conheço do javaScript, o exemplo do kiko acredito que seja o ideal para meu problema, porém não estou conseguido implementa-lo no meu código acima. se alguém poder me exemplificar como ficaria nesse código agradeço! 
04/07/2016 09:23


0
Cara vc tem q entender como o Grails funciona.
Não tem como atualizar o resultado dinamicamente como é feito cm JavaScript. Vc tem que mandar uma requisição para um Controller, efetuar a soma e retornar o resultado dessa soma para uma view.
Se não for persistir essas somas no banco de dados, não precisa criar um Model soma. Segue um exemplo:

class somaController {
    def mostraFormulario(){}

def calculaSoma(int a, int b)?{
? ?render (view:'resultado', model:[resultado:a+b])
?}
}

No seu mostraFormulario.gsp vc pode por assim:
<g:form>
?Primeiro Numero: <g:textField name="a"/>
S?egundo Numero: <g:textField name="b"/>
?<g:actionSubmit value="soma" action="calculaSoma"/>
</g:form>

E na view resultado.gsp vc faz:

A resposta é ${resultado}
06/07/2016 23:33



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