enviando váriaves do gsp para o Controller
24/01/2013 19:37
0
olá pessoal, estou há um tempinho empacado com um problema.


<g:each var="doc" in="${buscaDoc()}">
<div class="desc">${doc.texto} - ${doc.data} </div>
&nbsp;
<g:set var="qtd" value="${qtd + 1}"/>
</g:each>


a variável "doc.texto" é muito grande, gostaria de uma sugestão mais simples possível para exibir somente 100 caracteres de "doc.texto", o problema é que não consigo enviar essa variável para meu controller. Alguém pode me sugerir algo?

Atenciosamente.
Tags: de gsp para controller


0
Oi Fabiano,

o fluxo de dados no Grails é sempre assim:

requisição -> controlador -> view

Se for para enviar dados da view para o controlador, isto só se da através de uma nova requisição, ou seja, ou através de um link, formulário ou via Ajax.

No caso, você pode armazenra o valor desta variável em um input do tipo hidden e este valor ser submetido ao seu controlador.


0
Henrique desculpe meu amadorismo mas fiz isso, no gsp:

<g:each var="doc" in="${buscaDoc()}">
<input type="hidden" name="textoAux" value=${doc.texto}>
<div class="desc">${reduzTexto()} - ${doc.data} </div>
&nbsp;
</g:each>


e Fiz isso no controller:

def reduzTexto = {
String text = params.textoAux
}

E ainda não resolveu, o resultado é vazio. Oque mais preciso fazer?
24/01/2013 19:54


0
Fabiano, o mais correto, falando em melhor arquitetura, seria criar uma taglib.

Mas, se o método que quer está no controller, então faz assim:

${new MeuController().reduzTexto(doc.texto)}


Há de funcionar com certeza. Mas penso ser uma solução um tanto estranha...


0
e como fica meu método reduzTexto no Controller?
24/01/2013 20:17


0
Um método normal, amigo. Que recebe uma String e faz o que tem que fazer.

Não era esse?
http://www.grailsbrasil.com.br/post/show/2208


0
To usando este código:

<g:each var="doc" in="${buscaDoc()}">
<div class="desc">${new DocumentoController().reduzTexto(doc.texto)} - ${doc.data} </div>
&nbsp;
</g:each>


E estou obtendo este erro [ERROR DETAILS]:

Error 500: Could not parse script [Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp]: startup failed: Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp: 53: unable to resolve class DocumentoController @ line 53, column 94. oc.texto)', 126, it) { return new Docume ^ 1 error
Servlet: grails
URI: /Gerdoc/grails/documento/busca.dispatch
Exception Message: startup failed: Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp: 53: unable to resolve class DocumentoController @ line 53, column 94. oc.texto)', 126, it) { return new Docume ^ 1 error
Caused by: Could not parse script [Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp]: startup failed: Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp: 53: unable to resolve class DocumentoController @ line 53, column 94. oc.texto)', 126, it) { return new Docume ^ 1 error
Class: Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp
At Line: [126]
Code Snippet:


[STACK TRACE]


org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Could not parse script [Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp]: startup failed:
Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp: 53: unable to resolve class DocumentoController
@ line 53, column 94.
oc.texto)', 126, it) { return new Docume
^

1 error


at java.lang.Thread.run(Thread.java:680)

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp: 53: unable to resolve class DocumentoController
@ line 53, column 94.
oc.texto)', 126, it) { return new Docume
^

1 error


at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)

at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:839)

at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:521)

at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:470)

... 1 more



Alguém pode me ajudar?
24/01/2013 23:22


0
Amigo, calma...

pelo erro parece que faltou informar o pacote da classe "DocumentoController".

Ou faz isso já na expressão Ou faz um "import" no inicio da página. Se estiver usando uma IDE ela teria feito isso por você, mas fazendo "no braço" tens que fazer uma das 2 coisas você mesmo.


0
Desculpe Yoshiriro mas sou um pouco primário msm.

Em qual lugar do escopo eu faço esse import dentro do meu arquivo gsp?

qual seria o texto desse import?

import ...??

to usando NetBeans para programar

Agradeço mais uma vez
25/01/2013 00:27


0
Para facilitar:

Troque: ${new DocumentoController().reduzTexto(doc.texto)}
Por: ${new seuPacote.subPacote.outroPacote.DocumentoController().reduzTexto(doc.texto)}


0
Yoshiriro, muito obrigado mesmo. Você me ajudou a resolver um problema que estou enfrentando desde ontem. Comigo funcionou assim:


${new gerdoc.DocumentoController().reduzTexto(doc.texto)}


Abraços
25/01/2013 01:32



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